在我的应用程序中,我有5个CheckBoxes。在onclick-method中,我有以下代码:
bt_next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cb_answer1.setChecked(false);
cb_answer2.setChecked(false);
cb_answer3.setChecked(false);
cb_answer4.setChecked(false);
cb_answer5.setChecked(false);
cb_answer1.setClickable(true);
cb_answer2.setClickable(true);
cb_answer3.setClickable(true);
cb_answer4.setClickable(true);
cb_answer5.setClickable(true);
}}
这很好但我想缩短这段代码。所以我使用CheckBox-Names(作为类变量)创建了一个数组,并使用以下for循环替换了上面的代码:
for (CheckBox cb : answerCheckBoxes){
cb.setChecked(false);
cb.setClickable(true);
}
现在我得到一个NullPointerException - >空对象引用上的CheckBox.setChecked(boolean)。我不明白为什么我会得到这个例外。
有什么问题?
编辑: 这是我的阵列:
CheckBox[] answerCheckBoxes = { cb_answer1, cb_answer2, cb_answer3,
cb_answer4, cb_answer5 };.
如果我把它放在我的onclick-method中它可以工作,但作为类变量它不起作用。
有人能解释一下这种行为吗?
答案 0 :(得分:0)
您获得该异常是因为您的cb为null。只需将您的代码更改为:
for (CheckBox cb : answerCheckBoxes){
if (cb != null) {
cb.setChecked(false);
cb.setClickable(true);
}
}