2014-09-21 52 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):關閉VM

09-21 13:06:13.414:W/dalvikvm(282):線程ID = 1:螺紋帶 未捕獲的異常退出(組= 0x4001d800)

09-21 13:06:13.434:E/AndroidRuntime(282):致命異常:主

09-21 13:06:13.434:E/AndroidRuntime(282): 顯示java.lang.NullPointerException

09-21 13:06:13.434:E/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不定時(282):在 android.view.View $ PerformClick.run(View.java:8816)

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

09-21 13:06:13.434:E/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 E(282):在 android.app.ActivityThread.main(ActivityThread.java:4627)

09-21 13:06:13.434:E/AndroidRuntime(282):在 java.lang.reflect.Method中.invokeNative(本機方法)

09-21 13:06:13.434:E/AndroidRuntime(282):在 java.lang.reflect.Method.invoke(Method.java:521)

09- 21 13:06:13.434:E/AndroidRuntime(282):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)

09-21 13:06:13.434:E/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(Native Method)

09-21 13:06:15.944:I/Process(282):發送信號。 PID:282 SIG:9 v22.3.0-887826

,如果你想知道什麼是在佈局XML,它只是4 Textviews,只是這裏所列的按鈕。

也,即時通訊試圖在成((TextView的電視+時間[X] +日期[Y] .setText .....如果可能的話。

任何幫助將是巨大的。

+0

你初始化'tv'在你的代碼中?在MainActivity.java類中也指示第33行 – 2014-09-21 06:50:32

+0

沒有初始化電視,但它應該是,例如。 tv [x] [y]我認爲這意味着tv00(對於第13行) – ken 2014-09-21 06:53:17

+0

你不能這樣做,如果你想這樣做,你必須初始化你的數組,然後把'TextView'放在數組上,然後使用它, – 2014-09-21 06:57:06

回答

-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

嗯。你能否提供修改後的代碼> im還是adnroid中的新功能,所以我現在真的瞭解一切。 – ken 2014-09-21 07:03:22

+0

'電視'不應該是靜態的 - 它應該改變爲一個實例變量。因爲它是本地化到這個活動的,所以沒有任何目的使這些代碼成爲靜態的。 – 2014-09-21 07:40:16

+0

安德魯,我不認爲爲他寫代碼是正確的或必要的,而是給他足夠的信息來繼續過去的明顯錯誤。 – 2014-09-21 07:44:35