2014-09-21 3 views
0

я пытаюсь создать программу, но получаю сообщение об ошибке, хотя это является работоспособной, но сила останавливается, когда я нажимаю на кнопку, вот коддинамически настраивает TextView?

public class MainActivity extends Activity { 
    protected static final Object[][] tv = null; 
    Integer time[] = { 0, 1 }; 
    String days[] = { "a", "b" }; 
    TextView tv00, tv10, tv01, tv11; 
    Button b1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     b1 = (Button) findViewById(R.id.button1); 
     tv00 = (TextView) findViewById(R.id.textView1); 
     tv10 = (TextView) findViewById(R.id.textView2); 
     tv01 = (TextView) findViewById(R.id.textView3); 
     tv11 = (TextView) findViewById(R.id.textView4); 
     b1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       for (int x = 0; x < time.length; x++) { 
        for (int y = 0; y < days.length; y++) { 
         ((TextView) tv[x][y]).setText("ch" + time[x] + days[y]); 
        } 
       } 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

здесь является LogCat

09 -21 13: 06: 13,414 D/AndroidRuntime (282): Выключение ВМ

09-21 13: 06: 13.414: W/dalvikvm (282): ThreadId = 1: поток, выходящий с неперехваченного исключения (группа = 0x4001d800)

09-21 13: 06: 13,434: Е/AndroidRuntime (282): неустранимые: Главный

09-21 13: 06: 13,434: Е/AndroidRuntime (282): java.lang.NullPointerException

09-21 13: 06: 13,434: Е/AndroidRuntime (282): в com.thesis.testing.MainActivity $ 1.onClick (MainActivity.java:33)

09-21 13: 06: 13.434: E/AndroidRuntime (282): at android.view.View.performClick (View.java:2408)

09-21 13: 06: 13.434: E/AndroidR untime (282): в android.view.View $ PerformClick.run (View.java:8816)

09-21 13: 06: 13.434: Е/AndroidRuntime (282): в android.os.Handler .handleCallback (Handler.java:587)

09-21 13: 06: 13,434: Е/AndroidRuntime (282): в android.os.Handler.dispatchMessage (Handler.java:92)

09 -21 13: 06: 13.434: E/AndroidRuntime (282): at android.os.Looper.loop (Looper.java:123)

09-21 13: 06: 13.434: E/AndroidRuntim е (282): в android.app.ActivityThread.main (ActivityThread.java:4627)

09-21 13: 06: 13,434: Е/AndroidRuntime (282): в java.lang.reflect.Method .invokeNative (Родной метод)

09-21 13: 06: 13,434: Е/AndroidRuntime (282): в java.lang.reflect.Method.invoke (Method.java:521)

09- 21 13: 06: 13,434: Е/AndroidRuntime (282): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)

09-21 13: 06: 13,434: Е/AndroidRuntime (282): в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)

09-21 13: 06: 13,434: E/AndroidRuntime (282): at dalvik.system.NativeStart.main (родной метод)

09-21 13: 06: 15.944: I/Process (282): сигнал отправки. PID: 282 SIG: 9 v22.3.0-887826

если вы хотите знать, что там в макете XML, его всего 4 TextViews и кнопки так же, как перечисленные здесь.

также, им пытаются сделать в в ((TextView ТВ + время [х] + дата [у] .setText ..... если это возможно.

любая помощь будет большим.

+0

где вы инициализируете 'tv' в своем коде? укажите строку 33 в классе «MainActivity.java» тоже –

+0

нет инициализированного для телевизора, но это должно было быть, например. tv [x] [y], который, как я думал, будет означать tv00 (для строки 13) – ken

+0

, вы не можете этого сделать, если вы хотите сделать это, вы должны инициализировать свой массив и поместить 'TextView' на массив, а затем использовать это, –

ответ

-1

вы никогда не инициализирует телевизор Простейшая вещь, чтобы сделать, это оба дня и времени статические

Затем вы можете сделать что-то вроде:...

static Integer time[] = { 0, 1 }; 
static String days[] = { "a", "b" }; 
protected static final Object[][] tv = new Object[time.length][days.length]; 

Затем заполнить ваш телевизор массив с вашими TextViews перед использованием

tv[0] = tv00; 
tv[1] = tv10; 
tv[2] = tv01; 
tv[3] = tv11; 
+0

hmmm. можете ли вы представить пересмотренные коды> im, все еще новые в adnroid, поэтому я действительно все понимаю на данный момент. – ken

+0

'tv' не должно быть статическим - его следует изменить как переменную экземпляра. Нет никакой цели сделать какой-либо из этого кода статическим, поскольку он локализуется в этом действии. –

+0

Эндрю, я не думал, что это правильно или необходимо написать код для него, но вместо этого дать ему достаточно информации, чтобы продолжить очевидную ошибку. –

Смежные вопросы