How to set only one RadioButton Can be selected at the time in RadioGroup
Solution 1
It's not working because of TableRow inside RadioGroup. All RadioButtons are not grouped together because of TableRow between them.
RadioButton should be the direct child of RadioGroup, Otherwise grouping does not work.
Just change your code like this it will work :
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/RGroup">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Abdominal"
android:id="@+id/Abdominal"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Arm"
android:id="@+id/Arm"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Back"
android:id="@+id/Back" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Chest"
android:id="@+id/Chest"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Leg"
android:id="@+id/Leg"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Shoulder"
android:id="@+id/Shoulder"/>
</RadioGroup>
Hope this helps. :)
Solution 2
I have noticed that single selection does not work without setting id
to radio buttons.
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/expenseRadio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/expense" />
<RadioButton
android:id="@+id/incomeRadio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/income" />
</RadioGroup>
Solution 3
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:id="@+id/radioGroup">
<RadioButton
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="wrap_content"
android:text="Debit"
android:id="@+id/rDebit"
android:checked="false"
/>
<RadioButton
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="wrap_content"
android:text="Credit"
android:id="@+id/rCredit"
android:checked="false" />
</RadioGroup>
And in java file
RadioGroup radioGroup;
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
And when to do something
if (radioGroup.getCheckedRadioButtonId() == R.id.rCredit)
{
// do something
}
Solution 4
I faced same problem and found where I was making mistakes and I describes it below:
If you are using RadioButtons in RadioGroup then
RadioButtons should be direct child of RadioGroup
.Check your first condition and if it was correct then
give id to RatioButton
and run project, it will automatically solve your problem.
Solution 5
Simple way. onclick of radio button. do code as per below.
public void clearRadioChecked() {
rdopa.setChecked(false);
rdopb.setChecked(false);
rdopc.setChecked(false);
rdopd.setChecked(false);
}
if you wann select rdopa then on click of rdopa do as below.
clearRadioChecked()
rdopa.setChecked(true);
Comments
-
F_X almost 2 years
I've created a radio button in radiogroup, but when I try running the apps all radio button can be selected all the time, and how to set only one radiobutton can be selected at one time?
I'm using Fragment
RadioGroup radioGroup = (RadioGroup) rootView.findViewById(R.id.RGroup); radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // find which radio button is selected if(checkedId == R.id.Abdominal) { Toast.makeText(getActivity().getApplicationContext(), "choice: A", Toast.LENGTH_SHORT).show(); } else if(checkedId == R.id.Arm) { Toast.makeText(getActivity().getApplicationContext(), "choice: B", Toast.LENGTH_SHORT).show(); } else if(checkedId == R.id.Back){ Toast.makeText(getActivity().getApplicationContext(), "choice: C", Toast.LENGTH_SHORT).show(); } else if(checkedId == R.id.Chest){ Toast.makeText(getActivity().getApplicationContext(), "choice: D", Toast.LENGTH_SHORT).show(); } else if(checkedId == R.id.Leg){ Toast.makeText(getActivity().getApplicationContext(), "choice: E", Toast.LENGTH_SHORT).show(); } else if(checkedId == R.id.Shoulder){ Toast.makeText(getActivity().getApplicationContext(), "choice: F", Toast.LENGTH_SHORT).show(); } } });
here my xml code for RG and RB
<RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/RGroup"> <TableRow android:weightSum="1"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Abdominal" android:id="@+id/Abdominal"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Arm" android:id="@+id/Arm"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Back" android:id="@+id/Back" /> </TableRow> <TableRow> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Chest" android:id="@+id/Chest"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Leg" android:id="@+id/Leg"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Shoulder" android:id="@+id/Shoulder"/> </TableRow> </RadioGroup>
EDITED 1 : Answer : If you dont want radio button can be selected in one time, so dont use Tablerow