我已动态创建RadioGroup
和RadioButton
,如下所示:
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
始终被检查。这意味着我无法通过检查其他两个单选按钮(radioBtn2
,radioBtn1
)来取消选中radioBtn3
。我想让RadioGroup
一次只能检查一个单选按钮(现在它可以一次检查两个单选按钮)。
我该如何解决这个问题?
答案 0 :(得分:195)
radiogroup.check(IdOfYourButton)
当然,您首先必须为您的无线电按钮设置ID
编辑:我忘记了,radioButton.getId()
也可以,Rxsh
EDIT2:
android:checkedButton="@+id/my_radiobtn"
适用于radiogroup xml
答案 1 :(得分:107)
如果xml属性为android:checkedButton
,则需要检查id
的{{1}}。
RadioButton
答案 2 :(得分:50)
在XML文件中设置android:checkedButton
中的RadioGroup
字段,其ID为默认RadioButton
:
<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>
答案 3 :(得分:19)
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());
答案 4 :(得分:3)
我的同事代码中存在同样的问题。这听起来就像您的收音机组没有正确设置您的收音机按钮。这就是您可以多选单选按钮的原因。我尝试了很多东西,最后我做了一个实际上错误的技巧,但工作正常。
for ( int i = 0 ; i < myCount ; i++ )
{
if ( i != k )
{
System.out.println ( "i = " + i );
radio1[i].setChecked(false);
}
}
这里我设置了一个for循环,它检查可用的单选按钮并取消选择除新单击按钮之外的每个按钮。试试吧。
答案 5 :(得分:2)
在您的activity.xml中添加android:checked = "true"
答案 6 :(得分:0)
这是RadioGroup的错误
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);