我目前正在开发自己的测验应用程序并考虑问题2天。我的测验提供了两个问题变体:多项选择和单项选择。因此,对于我使用CheckBoxes的多项选择问题,对于单选项变体,有RadioButtons。
如果用户回答问题并转到下一个问题,结果将保存在我的SQLite数据库中。如果他跳回到上一个问题我将显示保存的结果。
这是一个例子: 在图像1上,您会在左侧看到5个CheckBoxes。这些是正确的答案。正确的CheckBoxes是用户的已检查答案。所以这是你回答问题时点击的屏幕,点击“下一步”按钮然后再回到你回答的问题。对于CheckBoxes,它可以正常工作。
在图像2上,您会看到相同的用例,但这次只有一个选择问题。正如您所看到的,右侧没有检查RadioButton。但实际上我检查了中间答案,结果也保存在我的数据库中。
如果我调试我的应用程序,它也会跳转到正确的部分并检查正确的RadioButton。但它永远不会显示为已选中,我在这里找不到错误。
String resultString = userResultCursor.getString(userResultCursor.getColumnIndexOrThrow(MyDatabase.ResultColumns.RESULT));
String resultArray[] = convertStringToArray(resultString);
List<String> resultList = Arrays.asList(resultArray);
for (String id : resultList) {
if (question.getQuestiontype() == 1) {
for (CheckBox cb : answerCheckBoxes) {
if (cb.getId() == Integer.parseInt(id)) {
cb.setChecked(true);
}
cb.setEnabled(false);
}
}
if (question.getQuestiontype() == 2) {
for (RadioButton rb : answerRadioButtons) {
if (rb.getId() == Integer.parseInt(id)) {
rb.setChecked(true);
}
rb.setEnabled(false);
}
}
可能是什么问题?
这是RadioButtons的布局
<LinearLayout
android:id="@+id/layout_singlechoice_answers"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:orientation="vertical">
<RadioGroup
android:id="@+id/myRadioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rb_answer1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/rb_answer2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/rb_answer3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/rb_answer4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/rb_answer5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RadioGroup>
</LinearLayout>
编辑:使用Saurabh Padwekar解决方案,它会显示已检查的RadioButton。但经过测试后我注意到了这一点:有时如果我想检查一个RadioButton,它就不会被检查。它大部分都有效,但偶尔也不起作用。
答案 0 :(得分:1)
尝试在设置前清除广播组。
if (question.getQuestiontype() == 2) {
rdbGroup.clearCheck(); //Clear radio group before check
for (RadioButton rb : answerRadioButtons) {
if (rb.getId() == Integer.parseInt(id)) {
rb.setChecked(true);
}
rb.setEnabled(false);
}
}