Utiliser des boutons radio
Cet exemple montre comment utiliser des boutons radio de trois façons :
- boutons individuels (approche non recommandée);
- dans un RadioGroup avec gestionnaire assigné à chacun dans le code XML;
- dans un RadioGroup avec gestionnaire assigné au groupe dans le code Java.
MainActivity.java
package net.codeandroid.boutonsradio; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // assignation d'un gestionnaire pour le groupe de boutons radio RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radio_group); InfosRadioGroup groupe = new InfosRadioGroup(); radioGroup.setOnCheckedChangeListener(groupe); Button btn = (Button)findViewById(R.id.bouton_selection); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int id = radioGroup.getCheckedRadioButtonId(); if (id != -1) { // si un bouton du groupe est sélectionné RadioButton btn = (RadioButton)findViewById(id); String message = "Sélection courante: " + btn.getText().toString(); Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); } } }); } // affiche un toast avec le texte du bouton public void afficherTexteBouton(View vue) { Button btn = (Button)vue; String message = btn.getText().toString(); Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); } // classe qui implémente le gestionnaire de boutons radio private class InfosRadioGroup implements RadioGroup.OnCheckedChangeListener { private RadioButton mAncienneSelection; @Override public void onCheckedChanged(RadioGroup groupe, int idBouton) { RadioButton nouvelleSelection = (RadioButton)findViewById(idBouton); String message; if (mAncienneSelection == null) { // c'est la première fois qu'un bouton du groupe est sélectionné message = "Nouvelle sélection: " + nouvelleSelection.getText().toString(); } else { message = "Nouvelle sélection: " + nouvelleSelection.getText().toString() + "\nAncienne sélection: " + mAncienneSelection.getText().toString(); } mAncienneSelection = nouvelleSelection; Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); } } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="20dp"> <!-- boutons radio individuels (à proscrire) --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="20dp" android:layout_marginBottom="10dp" android:background="#eee"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Bouton 1" android:onClick="afficherTexteBouton"> </RadioButton> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Bouton 2" android:onClick="afficherTexteBouton"> </RadioButton> </LinearLayout> <!-- boutons radio dans un groupe --> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" android:layout_marginBottom="10dp" android:background="#eee"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Bouton 3" android:onClick="afficherTexteBouton"> </RadioButton> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Bouton 4" android:onClick="afficherTexteBouton"> </RadioButton> </RadioGroup> <!-- boutons radio dans un groupe avec gestionnaire assigné dans le code Java --> <RadioGroup android:id="@+id/radio_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" android:layout_marginBottom="10dp" android:background="#eee"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Bouton 5"> </RadioButton> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Bouton 6"> </RadioButton> </RadioGroup> <Button android:id="@+id/bouton_selection" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="15sp" android:text="Afficher sélection dernier groupe"> </Button> </LinearLayout>