Android - 处理多个CheckBox的问题

时间:2016-07-15 23:23:47

标签: java android checkbox

在我的应用程序中,我有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中它可以工作,但作为类变量它不起作用。

有人能解释一下这种行为吗?

1 个答案:

答案 0 :(得分:0)

您获得该异常是因为您的cb为null。只需将您的代码更改为:

for (CheckBox cb : answerCheckBoxes){
    if (cb != null) {
        cb.setChecked(false);
        cb.setClickable(true);
    }
}