0

我目前開發自己的測驗應用程序,並考慮與2天的問題。我的測驗提供了兩個變體的問題:多選和單選。所以對於我使用複選框的多項選擇問題,單選按鈕有RadioButtons。檢查RadioButtons的奇怪行爲

如果用戶回答問題並轉到下一個問題,結果將保存在我的SQLite數據庫中。如果他跳回上一個問題,我將顯示保存的結果。

以下是一個示例: 在圖像1上,您會看到左側的5個複選框。這是正確的答案。正確的CheckBoxes是用戶的檢查答案。所以這是你回答問題時得到的屏幕,點擊「下一步」按鈕,然後再回到你的回答問題。對於CheckBox,它工作正常。

Image 1

在圖片2你看到同樣的用例,但這次有單選題。正如你所看到的,右側沒有選中RadioButton。但事實上,我檢查了中間的答案,結果也保存在我的數據庫中。

Image 2

如果調試我的應用程序也跳在正確的部分和檢查的權利單選按鈕。但它永遠不會顯示爲已選中狀態,而且我無法在此處找到錯誤。

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

可能是什麼問題?

下面是單選按鈕

<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,它不會被檢查。大多數情況下,它可以工作,但偶爾它不起作用。

+0

請發佈佈局xml單選題 – 0X0nosugar

+1

您是否定義了2組?一個用於左列,另一個用於右列? –

+0

@David Wasser我只在右欄聲明瞭一個RadioGroup –

回答

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); 
       } 
      } 
+0

謝謝!這很簡單。它適用於clearCheck()。我以前從來沒有聽說過這個。 –

+0

經過一些測試後,我發現了另一個問題。我編輯了我的帖子。 –