我动态创建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;
}
答案 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>