我从XML创建一个RadioGroup
<RadioGroup android:id="@+id/option"
android:layout_width="match_parent"
android:orientation="horizontal"
android:checkedButton="@+id/block_scenario_off"
android:layout_height="wrap_content">
<RadioButton
android:layout_width="0dip"
android:layout_weight="1"
android:text="@string/option1"
android:layout_height="wrap_content"
android:id="@+id/option1"
android:layout_gravity="center|left"
android:onClick="@string/on_click"/>
<RadioButton
android:layout_width="0dip"
android:layout_weight="1"
android:text="@string/option2"
android:onClick="@string/on_click"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/option2"/>
<RadioButton
android:layout_width="0dip"
android:layout_weight="1"
android:text="@string/option3"
android:onClick="@string/on_click"
android:layout_height="wrap_content"
android:layout_gravity="center|right"
android:id="@+id/option3" />
</RadioGroup>
在Java代码中,我以编程方式检查有关活动创建的第一个(onCreate()),如下所示:
mOption = (RadioGroup) findViewById(R.id.option);
mOption.check(R.id.option1);
但是当显示活动时,不会选中单选按钮。有什么帮助吗?
答案 0 :(得分:60)
在您的布局中,您可以将android:checked="true"
添加到您想要被选中的CheckBox
。
或者以编程方式,您可以使用可检查界面中定义的setChecked方法:
RadioButton b = (RadioButton) findViewById(R.id.option1);
b.setChecked(true);
答案 1 :(得分:30)
试试这个 如果你想根据某个变量的值检查你的单选按钮,例如“genderStr”然后您可以使用以下代码段
if(genderStr.equals("Male"))
genderRG.check(R.id.maleRB);
else
genderRG.check(R.id.femaleRB);
答案 2 :(得分:25)
您可能需要在代码的onCreate方法中声明单选按钮并使用它们。
RadioButton rb1 = (RadioButton) findViewById(R.id.option1);
rb1.setChecked(true);
答案 3 :(得分:18)
小心!使用setChecked()
检查单选按钮不会改变RadioGroup内的状态。例如,radioGroup中的此方法将返回错误的结果:getCheckedRadioButtonId()
。
始终使用
检查radioGroupmOption.check(R.id.option1);
你已被警告过;)
答案 4 :(得分:13)
抓住广播组并查看孩子,看看是否有任何未经检查。
RadioGroup rg = (RadioGroup) view;
int checked = savedInstanceState.getInt(wrap.getAttributeName());
if(checked != -1) {
RadioButton btn = (RadioButton) rg.getChildAt(checked);
btn.toggle();
}
答案 5 :(得分:11)
您也可以使用getChildAt()方法。像这样:
mOption = (RadioGroup) findViewById(R.id.option);
((RadioButton)mOption.getChildAt(0)).setChecked(true);
答案 6 :(得分:8)
如果您将mOption.check(R.id.option1);
放入onAttachedToWindow
方法或类似这样的方法,它会有效:
view.post(new Runnable()
{
public void run()
{
// TODO Auto-generated method stub
mOption.check(R.id.option1);
}
});
原因可能是检查方法仅在实际渲染无线电组时才有效。
答案 7 :(得分:7)
我在使用无线电组索引时使用此代码:
radioGroup.check(radioGroup.getChildAt(index).getId());
答案 8 :(得分:4)
我在为广播组使用getId()时使用了这段代码:
radiogroup.check(radiogroup.getChildAt(0).getId());
根据RadioGroup的设计设置位置
希望这对您有帮助!
答案 9 :(得分:0)
我更喜欢使用
RadioButton b = (RadioButton) findViewById(R.id.option1);
b.performClick();
而不是使用公认的答案。
RadioButton b = (RadioButton) findViewById(R.id.option1);
b.setChecked(true);
原因是setChecked(true)
仅更改单选按钮的选中状态。它不会触发添加到您的单选按钮的onClick()
方法。有时,这可能会浪费您的时间来调试与onClick()
相关的操作为何不起作用。
答案 10 :(得分:0)
在科特林中。选择第一个元素。您需要在 onViewCreated 或更高版本中执行此操作。
radioGroup.apply { check(getChildAt(0).id) }