2012-09-22 70 views
3

在xml佈局中,我有RadioGroup,Button1,Button2。當用戶點擊按鈕1,幾個單選按鈕編程在RadioGroup中(單選按鈕的總量創造了可能會有所不同(pocet =要創建單選按鈕的次數)如何以編程方式刪除單選按鈕項目

final RadioButton[] rb = new RadioButton[pocet];   
    RadioGroup rg = (RadioGroup) findViewById(R.id.MyRadioGroup); 

    radiobuttonCount++; 
    for(int i=0; i<pocet; i++){ 
     rb[i] = new RadioButton(this); 
     rb[i].setText("Radio Button " + radiobuttonCount); 
     rb[i].setId(radiobuttonCount+i);    
     rb[i].setBackgroundResource(R.drawable.button_green);    
     rg.addView(rb[i]);    
    } 

我嘗試做的是這樣的:當。用戶從選擇RadioGroup中的xy項,我會通過選定值的TextView並刪除所有單選按鈕

用於刪除目的使用:

 public void onCheckedChanged(RadioGroup rGroup, int checkedId) 
     { 
      RadioButton checkedRadioButton = (RadioButton)rGroup.findViewById(checkedId); 
      boolean isChecked = checkedRadioButton.isChecked(); 
      if (isChecked) 
      { 
       RadioGroup rg = (RadioGroup) findViewById(R.id.MyRadioGroup);           

       for (int i=0; i< rg.getChildCount(); i++){ 
        rg.removeViewAt(i); 
       } 
      } 

問題是,這有時會工作得很好,但有時第一個單選按鈕保持未刪除。

P.S. 後來我想添加button2,它會爲不同的項目和不同的單選按鈕數量提供radiogroup。這就是爲什麼我需要在用戶選擇後刪除所有單選按鈕。

回答

2

我的第一個猜測是,這個代碼部分是壞:

for (int i=0; i< rg.getChildCount(); i++){ 
     rg.removeViewAt(i); 
    } 

你不能運行在一個視圖中的孩子,而在同一時間 (rg.getChildCount(刪除子)期間,將改變運行)

16

它真的很容易,你只要做到這一點:

rg.removeAllViews(); 

,因爲我與工作了循環,但它並沒有消除所有的單選按鈕。 玩得開心:)

相關問題