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>
