12

我正在动态创建一个RadioGroupwith RadioButtons,并且需要默认选中一个单选按钮。

我已经通过同时使用radioButton.setChecked(true)radioButton.toggle();

我遇到的问题是,当我在运行时选择另一个单选按钮时,第一个单选按钮保持选中状态,因此我最终在单选组中得到了两个选中的单选按钮。

有没有人遇到过这个问题并知道如何解决?

private RadioButton addRadioButton(String type, String price){
        RadioButton radio = new RadioButton(Order.this);
        radio.setText(type + " (" + Utils.formatCurrency(price) + ")");
        radio.setTextAppearance(Order.this, R.style.portalCellTextStyle);
        radio.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
        radio.setTag(price);

        if(type.toLowerCase().equals("m"))
            radio.toggle();

        return radio;
    }
4

9 回答 9

12

我知道我迟到了,但对于像我这样寻找答案的人来说,这可能很有用。

将 RadioButton 添加到 RadioGroup 时,必须在将按钮添加到父级后设置选中的按钮,例如:

RadioGroup radioGroup = new RadioGroup(getContext())
RadioButton radioButton = new RadioButton(getContext());
radioButton.setText("text");
mRadioGroup.addView(radioButton);
radioButton.setChecked(true);

如果视图在添加到父视图之前被选中,则无法取消选中它。

于 2015-01-08T16:03:59.533 回答
4

你可以简单地做到这一点:

爪哇:

    radiogroup =(RadioGroup)findViewById(R.id.radiogroup);
    radiobutton1 =(RadioButton)findViewById(R.id.radiobutton1);
    radiobutton2 =(RadioButton)findViewById(R.id.radiobutton2);

    if(your first assessment){
        radiobutton1.setChecked(true);
    }else{
        radiobutton2.setChecked(true);
    }

XML:

   <RadioGroup
        android:id="@+id/radiogroup"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton
        android:id="@+id/radiobutton1"
        android:checked="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

        <RadioButton
        android:id="@+id/radiobutton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    </RadioGroup>
于 2014-09-17T11:10:19.580 回答
2

很简单,第一次加载屏幕检查 InGetview方法的位置,然后应用条件:

if (position == 0) {
  holder.act_delivery_rbtn.setChecked(true);
}
于 2015-09-11T05:40:58.830 回答
1

如果您只使用一个单选框来检查和关闭,也许您应该使用复选框或切换按钮。

http://developer.android.com/resources/tutorials/views/hello-formstuff.html

向下滚动并查看复选框和切换按钮。

使用收音机时,您通常拥有多个收音机并在它们之间进行选择。喜欢简单的,中等的,困难的。

代替

radio.toggle();

radio.setChecked(true);
于 2013-12-16T12:07:55.913 回答
1

只需在您的代码中设置 checked = "true"

于 2018-10-17T11:04:54.357 回答
0

使用 clearCheck() 函数清除已选中的按钮。希望这能解决您的问题。

于 2013-12-16T12:27:10.960 回答
0

原来是因为我在设置 OnCheckedChangeListener() 后直接在无线电组上调用了 check() 方法,导致它立即被调用并由于某种原因抛出 NPE。

将 checked() 方法调用移到 OnCheckedChangeListener() 之前,它现在可以工作了。

radios.check(2);
radios.setOnCheckedChangeListener(new OnCheckedChangeListener() {   
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {

                }
            });

private RadioButton addRadioButton(String type, String price){
        RadioButton radio = new RadioButton(Order.this);
        radio.setText(type + " (" + Utils.formatCurrency(price) + ")");
        radio.setTextAppearance(Order.this, R.style.portalCellTextStyle);
        radio.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
        radio.setTag(price);

        if(type.toLowerCase().equals("m"))
            radio.setId(2);

        return radio;
    }
于 2013-12-16T12:41:46.723 回答
0

你应该在广播组中检查它...

radiogroup.check(IdOfYourButton)
于 2013-12-16T12:08:59.270 回答
0

Xml此外 _ android:checkedButton="@+id/storeRB"_RadioGroup

 <RadioGroup
                android:id="@+id/storeTypeRG"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checkedButton="@+id/storeRB"
                android:orientation="horizontal"
                app:layout_constraintBottom_toBottomOf="@+id/text2"
                app:layout_constraintStart_toEndOf="@+id/text2"
                app:layout_constraintTop_toTopOf="@+id/text2">

                <RadioButton
                    android:id="@+id/storeRB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="24dp"
                    android:button="@drawable/radio_button_bg"
                    android:paddingStart="8dp"
                    android:text="@string/store_str"
                    app:layout_constraintBottom_toBottomOf="@+id/text2"
                    app:layout_constraintStart_toEndOf="@+id/text2"
                    app:layout_constraintTop_toTopOf="@+id/text2" />

                <RadioButton
                    android:id="@+id/hyperRB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="8dp"
                    android:button="@drawable/radio_button_bg"
                    android:paddingStart="8dp"
                    android:text="@string/hyper_str"
                    app:layout_constraintBottom_toBottomOf="@+id/text2"
                    app:layout_constraintStart_toEndOf="@+id/storeRB"
                    app:layout_constraintTop_toTopOf="@+id/text2" />

                <RadioButton
                    android:id="@+id/restaurantRB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="8dp"
                    android:button="@drawable/radio_button_bg"
                    android:paddingStart="8dp"
                    android:text="@string/restaurant_str"
                    app:layout_constraintBottom_toBottomOf="@+id/text2"
                    app:layout_constraintStart_toEndOf="@+id/hyperRB"
                    app:layout_constraintTop_toTopOf="@+id/text2" />
            </RadioGroup>

在此处输入图像描述

于 2020-08-06T22:47:41.027 回答