2011-11-23 120 views
1

我試圖創建一個簡單的高/低應用程序,但應用程序崩潰時,我嘗試獲得一個隨機數。 下面是一些代碼:隨機數字1-6

final TextView counter = (TextView) findViewById(R.id.tcounter); 
Button high = (Button) findViewById(R.id.bhigh); 
Button low = (Button) findViewById(R.id.blow); 
Button start = (Button) findViewById(R.id.bplay); 
final Random rstart = new Random(); 
final int counternr = rstart.nextInt(5) + 1; 

start.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      counter.setText(counternr); 

是應該設置TextView的「櫃檯」,以1-6的隨機數,但讓我崩潰。

在此先感謝!

編輯:這是錯誤的文字:

11-23 20:17:40.509: ERROR/AndroidRuntime(765): FATAL EXCEPTION: main 
11-23 20:17:40.509: ERROR/AndroidRuntime(765): java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx.xxx.xxx/xxx.xxx.xxx.play}: java.lang.NullPointerException 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.os.Looper.loop(Looper.java:123) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at java.lang.reflect.Method.invoke(Method.java:507) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at dalvik.system.NativeStart.main(Native Method) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765): Caused by: java.lang.NullPointerException 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at xxx.xxx.xxx.play.onCreate(play.java:26) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
11-23 20:17:40.509: ERROR/AndroidRuntime(765):  ... 11 more 

很凌亂,但我希望這是確定。

+9

發佈堆棧跟蹤或日誌的副本,顯示崩潰發生的位置以及拋出的異常。 – Grambot

+0

「NullPointerException」在「xxx.xxx.xxx.play.onCreate」 – Edalol

回答

7

更改此

counter.setText(counternr); 

與此

counter.setText(Integer.toString(counternr)); 

setText只接受CharSequence對象作爲參數的方法(在這種情況下,一個String)或int如果它代表一個資源ID

+0

實際上,它似乎也接受一個整數,所以你可以傳遞一個資源ID。這可以解釋爲什麼它是運行時錯誤而不是編譯時。 –

+0

是的,我糾正了我的答案。謝謝 –

+0

仍然崩潰,檢查了調試窗口,它說了一些關於「NullPointerException」並指向「onCreate」的內容。 – Edalol

1

確保您在致電setContentView(...)之前使用findViewById(...) fo您的ButtonsTextview

如果你不他們不會被發現,他們都將是空的。在這種情況下,嘗試設置start.OnClickListener(...)將丟棄NullPointerException