2011-11-23 132 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