web-dev-qa-db-fra.com

Comment vérifier si un radiobutton est contrôlé dans un radiogroupe sous Android?

Je dois définir la validation pour que l'utilisateur doive remplir/sélectionner tous les détails d'une page. Si des champs sont vides, je veux afficher Toast message to fill.. Maintenant, j’ai besoin de valider la définition de RadioButton dans le RadioGroup.. J’ai essayé ce code mais je n’ai pas fonctionné correctement. Suggérez-moi de manière correcte. Je vous remercie.

// get selected radio button from radioGroup
int selectedId = gender.getCheckedRadioButtonId();
// find the radiobutton by returned id
selectedRadioButton = (RadioButton)findViewById(selectedId);
// do what you want with radioButtonText (save it to database in your case)
radioButtonText = selectedRadioButton.getText().toString();

if(radioButtonText.matches(""))
{
    Toast.makeText(getApplicationContext(), "Please select Gender", Toast.LENGTH_SHORT).show();
    Log.d("QAOD", "Gender is Null");
}
else
{
    Log.d("QAOD", "Gender is Selected");
}
52
Srihari

Si vous voulez vérifier une seule variable RadioButton, vous pouvez utiliser la fonction isChecked

if(radioButton.isChecked())
{
  // is checked    
}
else
{
  // not checked
}

et si vous avez une RadioGroup vous pouvez utiliser

if (radioGroup.getCheckedRadioButtonId() == -1)
{
  // no radio buttons are checked
}
else
{
  // one of the radio buttons is checked
}
138
Apoorv

Tout ce que vous avez à faire est d’utiliser les méthodes getCheckedRadioButtonId() et isChecked(),

if(gender.getCheckedRadioButtonId()==-1)
{
    Toast.makeText(getApplicationContext(), "Please select Gender", Toast.LENGTH_SHORT).show();
}
else
{
    // get selected radio button from radioGroup
    int selectedId = gender.getCheckedRadioButtonId();
    // find the radiobutton by returned id
    selectedRadioButton = (RadioButton)findViewById(selectedId);
    Toast.makeText(getApplicationContext(), selectedRadioButton.getText().toString()+" is selected", Toast.LENGTH_SHORT).show();
}

https://developer.Android.com/guide/topics/ui/controls/radiobutton.html

14
Mehul Joisar

Utilisez la fonction isChecked () pour chaque bouton radio que vous devez vérifier.

RadioButton maleRadioButton, femaleRadioButton;

maleRadioButton = (RadioButton) findViewById(R.id.maleRadioButton);
femaleRadioButton = (RadioButton) findViewById(R.id.femaleRadioButton);

Ensuite, utilisez le résultat pour votre considération si/else.

if (maleRadioButton.isChecked() || femaleRadioButton.isChecked()) {
     Log.d("QAOD", "Gender is Selected");
} else {
    Toast.makeText(getApplicationContext(), "Please select Gender", Toast.LENGTH_SHORT).show();
    Log.d("QAOD", "Gender is Null");
}
7
Robin Ellerkmann

essayez d'utiliser ceci

<RadioGroup
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"       
    Android:orientation="horizontal"
>    
    <RadioButton
        Android:id="@+id/standard_delivery"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/Standard_delivery"
        Android:checked="true"
        Android:layout_marginTop="4dp"
        Android:layout_marginLeft="15dp"
        Android:textSize="12dp"
        Android:onClick="onRadioButtonClicked"   
    />

    <RadioButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/Midnight_delivery"
        Android:checked="false"
        Android:layout_marginRight="15dp"
        Android:layout_marginTop="4dp"
        Android:textSize="12dp"
        Android:onClick="onRadioButtonClicked"
        Android:id="@+id/midnight_delivery"
    />    
</RadioGroup>

c'est la classe Java

public void onRadioButtonClicked(View view) {
        // Is the button now checked?
        boolean checked = ((RadioButton) view).isChecked();

        // Check which radio button was clicked
        switch(view.getId()) {
            case R.id.standard_delivery:
                if (checked)
                    Toast.makeText(DishActivity.this," standard delivery",Toast.LENGTH_LONG).show();
                    break;
            case R.id.midnight_delivery:
                if (checked)
                    Toast.makeText(DishActivity.this," midnight delivery",Toast.LENGTH_LONG).show();
                    break;
        }
    }
3
gaurav gupta

J'ai utilisé l'identifiant de mes radiobuttons pour le comparer à l'identifiant du checkedRadioButton que j'ai eu avec mRadioGroup.getCheckedRadioButtonId()

Voici mon code:

mRadioButton1=(RadioButton)findViewById(R.id.first);
mRadioButton2=(RadioButton)findViewById(R.id.second);
mRadioButton3=(RadioButton)findViewById(R.id.third);
mRadioButton4=(RadioButton)findViewById(R.id.fourth);

mNextButton=(Button)findViewById(R.id.next_button);

mNextButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int selectedId=mRadioGroup.getCheckedRadioButtonId();

        int n=0;
        if(selectedId==R.id.first){n=1;}

        else if(selectedId==R.id.second){n=2;}

        else if(selectedId==R.id.third){n=3;}

        else if(selectedId==R.id.fourth){n=4;}
        //. . . .
    }
2
Shubhdeep Singh

Essayez d'utiliser la méthode isChecked ();

Comme,

selectedRadioButton.isChecked () -> renvoie un booléen.

Refere ici pour plus de détails sur le bouton radio 

2
balachandarkm
  rgrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            switch(i) {
                case R.id.type_car:
                    num=1;
                    Toast.makeText(getApplicationContext()," Car",Toast.LENGTH_LONG).show();
                    break;
                case R.id.type_bike:
                    num=2;
                    Toast.makeText(getApplicationContext()," Bike",Toast.LENGTH_LONG).show();
                    break;
            }
        }
    });
1
Malik Shahbaz

J'ai utilisé ce qui suit et cela a fonctionné pour moi. J'ai utilisé une fonction de validation booléenne dans laquelle, si un bouton radio dans un groupe de radio est coché, la fonction de validation renvoie la valeur true et une soumission est effectuée. si false est renvoyé, aucune soumission n'est faite et un toast à "Select Gender" est affiché:

  1. MainActivity.Java

    public class MainActivity extends AppCompatActivity {
        private RadioGroup genderRadioGroup;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        //Initialize Radio Group And Submit Button
        genderRadioGroup=findViewById(R.id.gender_radiogroup);
        AppCompatButton submit = findViewById(R.id.btnSubmit);
    
        //Submit Radio Group using Submit Button
        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Check Gender radio Group For Selected Radio Button
                if(genderRadioGroup.getCheckedRadioButtonId()==-1){//No Radio Button Is Checked
                    Toast.makeText(getApplicationContext(), "Please Select Gender", Toast.LENGTH_LONG).show();
                }else{//Radio Button Is Checked
                    RadioButton selectedRadioButton = findViewById(genderRadioGroup.getCheckedRadioButtonId());
                    gender = selectedRadioButton == null ? "" : selectedRadioButton.getText().toString().trim();
                }
                //Validate
                if (validateInputs()) {
                    //code to proceed when Radio button is checked
                }
            }
        }
        //Validation - No process is initialized if no Radio button is checked
        private boolean validateInputs() {
            if (genderRadioGroup.getCheckedRadioButtonId()==-1) {
                return false;
            }
            return true;
        }
    }
    
  2. Dans activity_main.xml:

    <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="horizontal">
    
        <TextView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="@string/gender"/>
    
        <RadioGroup
                Android:id="@+id/gender_radiogroup"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:orientation="horizontal">
    
            <RadioButton
                    Android:id="@+id/male"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:text="@string/male"/>
    
            <RadioButton
                    Android:id="@+id/female"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:text="@string/female""/>
    
        </RadioGroup>
    
        <Android.support.v7.widget.AppCompatButton
            Android:id="@+id/btnSubmit"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:text="@string/submit"/>
    
    </LinearLayout>
    

Si aucun bouton d'option de genre n'est sélectionné, le code à poursuivre ne fonctionnera pas.

J'espère que ça aide.

1
profjack

Ma réponse est selon la documentation , qui fonctionne bien.

1) Dans le fichier XML, incluez Android:onClick="onRadioButtonClicked" comme indiqué ci-dessous:

<RadioGroup
Android:id="@+id/rg1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:gravity="center">
<RadioButton
    Android:id="@+id/b1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:text="onCreateOptionsMenu()"
    Android:onClick="onRadioButtonClicked"
            />
<RadioButton
    Android:id="@+id/b2"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:text="onCreateMenu()"
    Android:onClick="onRadioButtonClicked"
            />
</RadioGroup>

2) Dans le fichier Java, implémentez la méthode onRadioButtonClicked en dehors de la méthode onCreate() comme indiqué ci-dessous:

public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.b1:
            if (checked)
            {
                Log.e("b1", "b1" );
                break;
            }
        case R.id.b2:
            if (checked)
                break;
    }
}
0
Shivam Taneja