如何在radiogroup中将单选按钮设置为默认值?

时间:2012-02-07 11:43:12

标签: android radio-button radio-group

我已动态创建RadioGroupRadioButton,如下所示:

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始终被检查。这意味着我无法通过检查其他两个单选按钮(radioBtn2radioBtn1)来取消选中radioBtn3。我想让RadioGroup一次只能检查一个单选按钮(现在它可以一次检查两个单选按钮)。

我该如何解决这个问题?

7 个答案:

答案 0 :(得分:195)

你应该像这样检查一下radiogutton中的radiobutton:

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);