已检查的RadioButtons

时间:2016-12-28 17:56:49

标签: android android-layout android-sqlite android-checkbox android-radiobutton

我目前正在开发自己的测验应用程序并考虑问题2天。我的测验提供了两个问题变体:多项选择和单项选择。因此,对于我使用CheckBoxes的多项选择问题,对于单选项变体,有RadioButtons。

如果用户回答问题并转到下一个问题,结果将保存在我的SQLite数据库中。如果他跳回到上一个问题我将显示保存的结果。

这是一个例子: 在图像1上,您会在左侧看到5个CheckBoxes。这些是正确的答案。正确的CheckBoxes是用户的已检查答案。所以这是你回答问题时点击的屏幕,点击“下一步”按钮然后再回到你回答的问题。对于CheckBoxes,它可以正常工作。

Image 1

在图像2上,您会看到相同的用例,但这次只有一个选择问题。正如您所看到的,右侧没有检查RadioButton。但实际上我检查了中间答案,结果也保存在我的数据库中。

Image 2

如果我调试我的应用程序,它也会跳转到正确的部分并检查正确的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,它就不会被检查。它大部分都有效,但偶尔也不起作用。

1 个答案:

答案 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);
                }
            }