2011-05-13 119 views
2

請幫我在這一個,我試着去產生2個單選按鈕在for循環中動態地根據啥子我希望用戶輸入有單選按鈕像Android的 - 動態單選按鈕問題

*電臺Button1的* RadioButton2

*電臺Button1的* RadioButton2

*電臺Button1的* RadioButton2

*電臺Button1的* RadioButton2

。 。 。

等等..取決於循環!

這是我的代碼中的代碼片段,它只爲一行中的2個單選按鈕工作,但是當我增加count值時。 。我得到了已經有父母的radiogroup孩子的android運行時錯誤。 :S

List<RadioGroup> allradioGroup = new ArrayList<RadioGroup>(); 
RadioGroup radioGroup; 

List<RadioButton> allRadio = new ArrayList<RadioButton>(); 
RadioButton radioButton; 

     for (int i = 0; i < count; i++) { 

     /* Defining RadioGroup */ 
     radioGroup = new RadioGroup(this); 
     radioGroup.setOrientation(RadioGroup.HORIZONTAL); 

     allradioGroup.add(radioGroup); 


     /* Displaying Radio Buttons */ 
     for (int j = 0; j < 2; j++) { 
      radioButton = new RadioButton(this); 
      radioButton.setTextColor(getResources().getColor(R.color.grey)); 
      radioButton.setId((j + 100)); 

      allRadio.add(radioButton); 

      if (allRadio.get(j).getId() == 100) { 
       radioButton.setText("private"); 
      } else if (allRadio.get(j).getId() == 101) { 
       radioButton.setText("public"); 
      } 

       allradioGroup.get(i).addView(allRadio.get(j), j, 
         layoutParams); 
     } 

     linear.addView(allradioGroup.get(i)); 

    } 

請幫助。謝謝

回答

0

你的問題是這樣一行:「allradioGroup.get(i).addView(allRadio.get(j),j,layoutParams);」

當您創建第二行時,參數j將在0-1範圍內。你正在嘗試使用allRadio.get(j),它在第二次運行時將返回你創建的第一個單選按鈕(它已經有一個父按鈕)。要解決此問題,請將「j」替換爲:「i * 2 + j」。這應該解決它。

+0

Ohhhhh,Yesssss我的壞人 非常感謝Frenkenstain im將此標記爲正確答案它像一個魅力一樣工作感謝很多 – 2011-05-13 12:42:12

+0

您能否也請幫助我從每行中的每個單選按鈕獲取值。 。這可以幫助我很多..(: – 2011-05-13 12:43:31

+0

)你有一個列表中的所有RadioGroups,你可以通過這個循環: 'for(int i = 0; i jorgenfb 2011-05-13 12:57:17