如何设置单选button作为Android的radiogroup中的默认值

我已经创build了RadioGroupRadioButtondynamic如下

 RadioGroup radioGroup = new RadioGroup(context); RadioButton radioBtn1 = new RadioButton(context); RadioButton radioBtn2 = new RadioButton(context); RadioButton radioBtn3 = new RadioButton(context); radioBtn1.setText("Less"); radioBtn2.setText("Normal"); radioBtn3.setText("More"); radioBtn2.setChecked(true); radioGroup.addView(radioBtn1); radioGroup.addView(radioBtn2); radioGroup.addView(radioBtn3); 

这里一步radioBtn2.setChecked(true); 导致radioBtn2总是被检查。 这意味着我不能通过检查其他两个单选button( radioBtn1radioBtn3 )来取消选中radioBtn2 。 我想让RadioGroup只能检查一个单选button(现在可以一次检查两个单选button)。 我怎么解决这个问题?

你应该像这样检查radiogroup中的单选button:

radiogroup.check(IdOfYourButton)

当然,你首先必须为你的单选button设置一个ID

编辑:我忘了, radioButton.getId()适用,thx Ramesh

在xml属性的情况下,它的android:checkedButton ,它需要检查RadioButtonid

 <RadioGroup ... ... android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked" ... >....</RadioGroup> 

在XML文件中设置RadioGroupandroid:checkedButton字段,并使用默认RadioButton的ID:

 <RadioGroup .... android:checkedButton="@+id/button_1"> <RadioButton android:id="@+id/button_1" ...../> <RadioButton android:id="@+id/button_2" ...../> <RadioButton android:id="@+id/button_3" ...../> </RadioGroup> 
  RadioGroup radioGroup = new RadioGroup(WvActivity.this); RadioButton radioBtn1 = new RadioButton(this); RadioButton radioBtn2 = new RadioButton(this); RadioButton radioBtn3 = new RadioButton(this); radioBtn1.setText("Less"); radioBtn2.setText("Normal"); radioBtn3.setText("More"); radioGroup.addView(radioBtn1); radioGroup.addView(radioBtn2); radioGroup.addView(radioBtn3); radioGroup.check(radioBtn2.getId()); 
 RadioGroup radioGroup = new RadioGroup(context); RadioButton radioBtn1 = new RadioButton(context); RadioButton radioBtn2 = new RadioButton(context); RadioButton radioBtn3 = new RadioButton(context); radioBtn1.setText("Less"); radioBtn2.setText("Normal"); radioBtn3.setText("More"); radioGroup.addView(radioBtn1); radioGroup.addView(radioBtn2); radioGroup.addView(radioBtn3); radioBtn2.setChecked(true); 

我的同事的代码也有同样的问题。 这听起来是因为您的收音机组没有正确设置您的收音机button。 这就是您可以多选单选button的原因。 我尝试了很多东西,最后我做了一个实际上是错误的技巧,但工作正常。

 for ( int i = 0 ; i < myCount ; i++ ) { if ( i != k ) { System.out.println ( "i = " + i ); radio1[i].setChecked(false); } } 

在这里,我设置了一个for循环,它检查可用的单选button并取消select除了新单击button之外的每个button。 尝试一下。

这是RadioGroup的一个bug

 RadioButton radioBtn2 = new RadioButton(context); 

radioBtn2没有viewId,而generateViewId是在onChildViewAdded()

 public void onChildViewAdded(View parent, View child) { if (parent == RadioGroup.this && child instanceof RadioButton) { int id = child.getId(); // generates an id if it's missing if (id == View.NO_ID) { id = View.generateViewId(); child.setId(id); } ((RadioButton) child).setOnCheckedChangeWidgetListener( mChildOnCheckedChangeListener); } if (mOnHierarchyChangeListener != null) { mOnHierarchyChangeListener.onChildViewAdded(parent, child); } } 

所以,先radioGroup.addView(radioBtn2),然后radioBtn2.setChecked(true);

喜欢这个:

 RadioGroup radioGroup = new RadioGroup(context); RadioButton radioBtn1 = new RadioButton(context); RadioButton radioBtn2 = new RadioButton(context); RadioButton radioBtn3 = new RadioButton(context); radioBtn1.setText("Less"); radioBtn2.setText("Normal"); radioBtn3.setText("More"); radioGroup.addView(radioBtn1); radioGroup.addView(radioBtn2); radioGroup.addView(radioBtn3); radioBtn2.setChecked(true);