设置默认选中的单选按钮

时间:2013-12-16 12:02:43

标签: android android-radiobutton

我动态创建RadioGroup RadioButton,并且默认情况下需要选中一个单选按钮。

我已使用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;
    }

8 个答案:

答案 0 :(得分:9)

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

将RadioButton添加到RadioGroup时,必须在将其添加到父级后将其设置为选中:

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

如果在将视图添加到父视图之前检查该视图,则无法取消选中该视图。

答案 1 :(得分:3)

您可以这样做:

JAVA:

    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>

答案 2 :(得分:2)

简单,首次加载屏幕时检查In Getview方法的位置,然后应用条件:

if (position == 0) {
  holder.act_delivery_rbtn.setChecked(true);
}

答案 3 :(得分:1)

如果你只使用一个收音机盒来检查和关闭,也许你应该使用复选框或切换按钮。

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

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

使用无线电时,您通常会有多个无线电,并在它们之间进行选择。喜欢简单,中等,坚硬。

替换

radio.toggle();

radio.setChecked(true);

答案 4 :(得分:1)

只需在代码中选中“ true”

答案 5 :(得分:0)

使用clearCheck()函数清除已经检查过的按钮。我希望这能解决你的问题。

答案 6 :(得分:0)

原来是因为我在设置OnCheckedChangeListener()之后直接调用了无线电组上的checked()方法,导致它被立即调用并因某种原因抛出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;
    }

答案 7 :(得分: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>

enter image description here