web-dev-qa-db-fra.com

Comment définir un seul bouton radio Peut être sélectionné à la fois dans RadioGroup

J'ai créé un bouton radio dans le radiogroupe, mais lorsque j'essaie d'exécuter les applications, tous les boutons radio peuvent être sélectionnés à tout moment et comment définir un seul bouton radio à la fois?

J'utilise 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();
                }
            }

        });

voici mon code xml pour RG et 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>

MODIFIÉ 1 : Réponse: .__ Si vous ne voulez pas que le bouton radio soit sélectionné en une fois, n’utilisez pas Tablerow

12
F_X

Cela ne fonctionne pas à cause de TableRow dans RadioGroup. Tous les RadioButtons ne sont pas regroupés en raison de TableRow entre eux.

RadioButton devrait être l'enfant direct de RadioGroup, sinon le regroupement ne fonctionne pas.

Il suffit de changer votre code pour que cela fonctionne:

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

J'espère que cela t'aides. :)

17
Janki Gadhiya

Manière simple. Cliquez sur le bouton radio. faire le code comme ci-dessous.

public void clearRadioChecked() {
    rdopa.setChecked(false);
    rdopb.setChecked(false);
    rdopc.setChecked(false);
    rdopd.setChecked(false);
}

si vous voulez sélectionner déposer, alors cliquez sur ci-dessous.

clearRadioChecked()
rdopa.setChecked(true);
4
Vasant
  <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>

Et en fichier Java

 RadioGroup radioGroup;



radioGroup = (RadioGroup) findViewById(R.id.radioGroup);

Et quand faire quelque chose 

 if (radioGroup.getCheckedRadioButtonId() == R.id.rCredit)
{
// do something
}
4

Vous pouvez utiliser l'attribut Android:checkedButton sur RadioGroup , en fournissant la valeur id du RadioButton que vous voulez vérifier initialement et en sélectionnant un autre RadioButton effacera la sélection précédente.

<RadioGroup
     Android:layout_width="wrap_content"
     Android:layout_height="wrap_content"
     Android:checkedButton="@+id/rbNo"
     Android:orientation="horizontal">

        <RadioButton
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_marginEnd="50dp"
            Android:text="Yes" />

        <RadioButton
            Android:id="@+id/rbNo"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="No" />
</RadioGroup>
0
Levon Petrosyan