首页 文章

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

提问于
浏览
120

我动态创建 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 . 这意味着我无法通过检查其他两个单选按钮( radioBtn1radioBtn3 )取消选中 radioBtn2 . 我想让 RadioGroup 一次只能检查一个单选按钮(现在它可以一次检查两个单选按钮) .

我怎么解决这个问题?

8 回答

  • 19

    在activity.xml中添加 android:checked = "true"

  • 0

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

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

    在这里,我设置了一个for循环,它检查可用的单选按钮,并取消选择除新单击的按钮之外的每个按钮 . 试试吧 .

  • 106

    你应该像这样检查radiogroup中的radiobutton:

    radiogroup.check(IdOfYourButton)

    当然,您首先必须为您的单选按钮设置ID

    编辑:我忘了, radioButton.getId() 也适用,拉克什

    EDIT2:

    android:checkedButton="@+id/my_radiobtn"
    

    适用于radiogroup xml

  • 6

    如果是xml属性,则 android:checkedButton 将检查 RadioButtonid .

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

    在XML文件中,在 RadioGroup 中设置 android:checkedButton 字段,其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>
    
  • 2
    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());
    
  • 192
    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);
    
  • 3

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

相关问题