How to set only one RadioButton Can be selected at the time in RadioGroup

54,832

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:

  1. If you are using RadioButtons in RadioGroup then RadioButtons should be direct child of RadioGroup.

  2. 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);
Share:
54,832
F_X
Author by

F_X

new on android

Updated on July 09, 2022

Comments

  • F_X
    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