RadioGroup: How to check programmatically
I create a RadioGroup from XML
<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>
In Java code, I programmatically check the first one on activity creation (onCreate()) as following:
mOption = (RadioGroup) findViewById(R.id.option);
mOption.check(R.id.option1);
But when the activity is shown, no radio button is checked. Any help?
Solution 1:
In your layout you can add android:checked="true"
to CheckBox
you want to be selected.
Or programmatically, you can use the setChecked method defined in the checkable interface:
RadioButton b = (RadioButton) findViewById(R.id.option1);
b.setChecked(true);
Solution 2:
try this if you want your radio button to be checked based on value of some variable e.g. "genderStr" then you can use following code snippet
if(genderStr.equals("Male"))
genderRG.check(R.id.maleRB);
else
genderRG.check(R.id.femaleRB);
Solution 3:
You may need to declare the radio buttons in the onCreate method of your code and use them.
RadioButton rb1 = (RadioButton) findViewById(R.id.option1);
rb1.setChecked(true);
Solution 4:
Watch out! checking the radiobutton with setChecked()
is not changing the state inside the RadioGroup. For example this method from the radioGroup will return a wrong result: getCheckedRadioButtonId()
.
Check the radioGroup always with
mOption.check(R.id.option1);
you've been warned ;)