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");
}
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
}
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
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");
}
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;
}
}
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;}
//. . . .
}
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
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;
}
}
});
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é:
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;
}
}
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.
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;
}
}