我正在尝试使用click方法来侦听提交按钮,并检查选中的复选框是否根据该复选框加载某个活动这里是我为此功能提供的代码,但它一直在崩溃我的Android应用程序。有人可以说明我可能做错了什么。请忽略任何拼写或语法错误,因为我有dilexsia。
if (v.getId() == R.id.submit) {
Intent intent = new Intent(ModeSelect.this, OnePSetup.class);
if (checkBox.isChecked()){
startActivity(intent);
System.out.println("checked");
}
}
这是输出错误
11-14 15:36:09.820 12457-12478/allanwalls1304988.straight4 E/Surface﹕ getSlotFromBufferLocked: unknown buffer: 0xb4057be0
11-14 15:36:11.952 12457-12457 / allanwalls1304988.straight4 E / AndroidRuntime:FATAL EXCEPTION:main 过程:allanwalls1304988.straight4,PID:12457 java.lang.NullPointerException:尝试调用虚方法' boolean android.widget.CheckBox.isChecked()'在null对象引用上 at allanwalls1304988.straight4.ModeSelect.onClick(ModeSelect.java:58) 在android.view.View.performClick(View.java:5198) 在android.view.View $ PerformClick.run(View.java:21147) 在android.os.Handler.handleCallback(Handler.java:739) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:148) 在android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
答案 0 :(得分:1)
从您发布的堆栈跟踪中,错误发生在ModeSelect.java第58行,错误在于执行此行checkBox.isChecked()
。看来你还没有启动checkBox
导致它抛出NullPointerException。你可以像这样启动它:
CheckBox checkBox = (CheckBox) findViewById(R.id.myCheckBox);
希望这有帮助。
答案 1 :(得分:1)
您的复选框在onCreate()方法中引用了一个局部变量,使其成为字段引用。那时它不应该给出空指针。 将其声明为字段
private CheckBox checkBox;
在onCreate()
方法
checkBox = (CheckBox) findViewById(R.id.cb1);