Radiogroup 的 NullPointerException

NullPointerException for Radiogroup

我尝试制作一个测验应用程序。我需要知道选择了哪个单选按钮,并用真正正确的答案进行检查。如果需要知道,我将 trueResult(score var.) 发送到另一个 ResultActivity class。

    if(((RadioButton) grp_options.getChildAt(grp_options.getCheckedRadioButtonId())).getText().equals(rightAnswers.get(i))) // Error at this expression
    {
        trueResult++;
    }

当我更改下面的部分时

grp_options.getChildAt(grp_options.getCheckedRadioButtonId()))

至此

grp_options.getChildAt(3))

它正确地将第 4 个选项与真实答案进行了比较。但我需要了解哪个 rb 用户检查过。所以问题就在这里:

grp_options.getCheckedRadioButtonId()

毕竟,该应用程序给了我 NPE。这是日志。如果有更好的方法来完成这项工作或我缺少的一点,我很乐意学习。

我不确定,但你可以试试这个:

而不是这个:

if(((RadioButton) grp_options.getChildAt(grp_options.getCheckedRadioButtonId())).getText().equals(rightAnswers.get(i)))

试试这个:

if(((RadioButton) findViewById(grp_options.getCheckedRadioButtonId())).getText().toString().equals(rightAnswers.get(i)))

我认为你的问题可能是你忘记在你的解决方案中使用 toString(),也许这也能正常工作:

if(((RadioButton) grp_options.getChildAt(grp_options.getCheckedRadioButtonId())).getText().toString().equals(rightAnswers.get(i)))

getCheckedRadioButtonId returns 视图 ID,即。 android:id.

如果您在布局中设置了 id,您应该能够通过 findViewById:

检索元素
grp_options.findViewById(grp_options.getCheckedRadioButtonId())