Exemples de code Android

Utiliser des boutons radio

Cet exemple montre comment utiliser des boutons radio de trois façons :

  1. boutons individuels (approche non recommandée);
  2. dans un RadioGroup avec gestionnaire assigné à chacun dans le code XML;
  3. 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>