【发布时间】:2014-09-05 08:24:12
【问题描述】:
以下代码出现在 DialogFragment 内的 OnClickListener 中,当按下某个按钮时会引发空指针异常。我在另一个应用程序的 Activity 中设置了类似的代码,并且它可以完美运行数月。我被引导相信这可能与代码位于 DialogFragment 中的事实有关......?无论如何,是时候偷看一下了:
@Override
public void onClick(View v) {
CheckBox[] ch= new CheckBox[3];
int ids[]= new int[3];
ch[0] = (CheckBox)v.findViewById(R.id.checkbox1);
ch[1] = (CheckBox)v.findViewById(R.id.checkbox2);
ch[2] = (CheckBox)v.findViewById(R.id.checkbox3);
for(int i=0;i<=2;i++){
if(ch[i].isChecked()){ //this is the line 35 mentioned in the LogCat
ids[i]=1;
}
}
((blahblahblah)getActivity()).updater(ids);
dismiss();
}
我的 LogCat 如下:
java.lang.NullPointerException
at com.blah.blah.addrule$1.onClick(addrule.java:35)
at android.view.View.performClick(View.java:4445)
at android.view.View$PerformClick.run(View.java:18446)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5140)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
at dalvik.system.NativeStart.main(Native Method
【问题讨论】:
-
显示
addrule的代码 -
交叉检查您的 findViewByid 引用是否引用了正确的复选框 ID?
-
@suitianshi 无意冒犯,但除非你让我知道你的怀疑,否则我将无法做到这一点。我不被允许。
-
@AndroidStudentM 引用就好了。
-
试试这个。在 onclick 之外创建三个本地 checkBoxes 变量在 onCreate 或 OncreateView 方法中找到您的复选框 id,并在 onclick 方法中分配该 checkBoxes 引用,而不是在 onclick 中调用 findViewById。
标签: java android arrays checkbox