如何设置单选button作为Android的radiogroup中的默认值
我已经创build了RadioGroup
和RadioButton
dynamic如下
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
总是被检查。 这意味着我不能通过检查其他两个单选button( radioBtn1
, radioBtn3
)来取消选中radioBtn2
。 我想让RadioGroup
只能检查一个单选button(现在可以一次检查两个单选button)。 我怎么解决这个问题?
你应该像这样检查radiogroup中的单选button:
radiogroup.check(IdOfYourButton)
当然,你首先必须为你的单选button设置一个ID
编辑:我忘了, radioButton.getId()
适用,thx Ramesh
在xml属性的情况下,它的android:checkedButton
,它需要检查RadioButton
的id
。
<RadioGroup ... ... android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked" ... >....</RadioGroup>
在XML文件中设置RadioGroup
的android:checkedButton
字段,并使用默认RadioButton
的ID:
<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>
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());
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);
我的同事的代码也有同样的问题。 这听起来是因为您的收音机组没有正确设置您的收音机button。 这就是您可以多选单选button的原因。 我尝试了很多东西,最后我做了一个实际上是错误的技巧,但工作正常。
for ( int i = 0 ; i < myCount ; i++ ) { if ( i != k ) { System.out.println ( "i = " + i ); radio1[i].setChecked(false); } }
在这里,我设置了一个for循环,它检查可用的单选button并取消select除了新单击button之外的每个button。 尝试一下。
这是RadioGroup的一个bug
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);
- 双窗格首选项屏幕出现问题
- Android工作室不识别源文件夹
- 如何解决一个Android Widget的“过程是坏的”错误?
- testing应用内结算:“发布商无法购买此项目”
- 如何在碎片之间传递数据
- 是否有可能在Linux上运行Xamarin Mono?
- Android 1.6:“android.view.WindowManager $ BadTokenException:无法添加窗口 – 标记null不适用于应用程序”
- 与依赖'com.android.support:support-annotations'冲突。 应用程序(23.1.0)和testing应用程序(23.0.1)的已解决版本不同
- android中的adjustResize和adjustPan之间的区别?