我尝试制作测验应用。我需要知道选择了哪个单选按钮并用真正正确的答案检查。如果需要知道,我将trueResult(得分变量)发送到另一个ResultActivity类。
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))
它恰当地将第四个选项与真实答案进行了比较。但我需要了解哪个rb用户检查过。问题出在这里:
grp_options.getCheckedRadioButtonId()
毕竟,该应用程序给了我NPE。这是日志。如果有更好的方法来完成这项工作或我失踪的一点,我很乐意学习。
答案 0 :(得分:0)
我不确定,但你可以试试这个:
而不是:
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)))
答案 1 :(得分:0)
getCheckedRadioButtonId
返回视图ID,即。 android:id
。
如果您在布局中设置了ID,则应该能够使用findViewById
检索元素:
grp_options.findViewById(grp_options.getCheckedRadioButtonId())