2012-11-19 25 views
1

在我的應用程序,我創建單選按鈕動態,並希望取消選中其中一個選中時的所有其他單選按鈕。爲此目的,我使用RadioGroup .clearCheck(),但它不是在all.This工作是代碼:RadioGroup.clearCheck()不工作的情況下動態創建的單選按鈕

for (int i=0; i<files.length; i++) 
      { 
       rbi = new RadioButton(context); 

       rb1 = new RadioGroup(context); 
       rb1.addView(rbi); 


       nameOfFile = files[i].getName(); 
       rbi.setText(nameOfFile); 
       ll.addView(rb1); 

       rbi.setOnClickListener(
         new RadioButton.OnClickListener() 
         { 
          @Override 
          public void onClick(View v) 
          {         

           rb1.clearCheck(); 
           rbi.setChecked(true); 

          } 

請幫me.Even的替代解決方案爲實現這一目標將提前welcomed.Thanks。

+0

請幫幫我。 – user1726619

+0

他們都檢查時檢查一個? – Bigflow

+0

你是AFAIK不應該爲'RadioButton'做'setOnClickListener'因爲'RadioGroup'已經通過'setOnCheckedChangeListener'來管理它了。 – zapl

回答

2

您創造了很多RadioGroup s的僅有1 RadioButton內。這可能不是你想要的。 A RadioGroup需要包含幾個RadioButton,因此您可以選擇列表中的活動按鈕。見下面的代碼

// create 1 RadioGroup, add it to the layout 
RadioGroup rg = new RadioGroup(context); 
ll.addView(rg); 
// add several RadioButtons to the RadioGroup 
for (int i=0; i < files.length; i++) { 
    String nameOfFile = files[i].getName(); 
    RadioButton rb = new RadioButton(context); 
    rb.setId(i); // assign an id 
    rb.setText(nameOfFile); 
    rg.addView(rb); // add to group 
} 
// do something when user checks a button 
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     // user selected files[checkedId].getName(); 
    } 
}); 
1

您是否嘗試過(使用System.out.println(「test」);)或其他東西,如果它甚至進入清除部分?首先會進行測試。 這就是zapl意味着

rb1.setOnCheckedChangeListener(
     new RadioGroup.OnCheckedChangeListener() { 
       public void onCheckedChanged(RadioGroup rb1, 
         int checkedId) { 
         Log.v("Selected", "New radio item selected: " + checkedId); 
         } 
      }); 

如果這樣的作品,那麼你可以試試這個:

if (rbi.isChecked()){ 
    rb1.clearCheck(); 
    rbi.setChecked(true); 
    }