我的CheckBox.isChecked()始终为null

时间:2016-05-11 17:09:23

标签: android

我正在为一个应用程序制作MCQ,现在我正在制作按钮,如果我的答案是对的,我必须看看!

我正在通过multiMap从相关问题中做出选择,我正在通过这样的inflater获取Checkbox:

for (String answer : multiMap.get(questionFromMultiMap))
        {
            CheckBox et_button = (CheckBox) getLayoutInflater().inflate(R.layout.numberofchoices, null);
            container.addView(et_button);
            et_button.setText(answer);
            listOfChoice.add(answer);

        }

当我试图检查其中一个是否检查并获取字符串时,logcat告诉我:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.CheckBox.isChecked()' on a null object reference
     at lyceraymondpointcar.entinfo.Games.Symptom$1.onClick(Symptom.java:87)

以下是我检查是否检查的方法

btnCorrect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if ((et_button).isChecked()){
                String choice = et_button.getText().toString();
                System.out.println("pouet");
            }else {
                //getQuestionAndAnswerFromList();
                System.out.println("pouet");


            }
        }
    });

我不知道为什么我会收到此错误,如果有人可以向我解释。

对我来说,这是我的充气机的问题,因为我有3个或4个具有相同ID的复选框!那我该怎么办?

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您需要查看变量范围。您可能在2个地方宣布et_button,并且您没有为您在此行访问的那个人提供价值:

if ((et_button).isChecked())

您需要从此行中删除Checkbox,如下所示:

et_button = (CheckBox) getLayoutInflater().inflate(R.layout.numberofchoices, null);

因为这样您实际上是为您在下面访问的et_button分配了价值。

我假设您在活动的其他位置声明了et_button,因为编译器正在为您提供NPE,而不是未定义的变量et_button'

编辑: 此外,还有一对支架已经过时,因此请将它们拆下来:

if (et_button.isChecked())

答案 1 :(得分:0)

使用此:

View v = getLayoutInflater().inflate(R.layout.numberofchoices, null);
CheckBox et_button = (CheckBox) v.findViewById(R.id.YOUR_CHECKBOX_ID);
            container.addView(et_button);

答案 2 :(得分:0)

你知道这个CheckBox et_button = (CheckBox) v.findViewById(R.id.YOUR_CHECKBOX_ID);是否正确? “YOUR_CHECKBOX_ID”是正确的吗?