Exemples de code Android

Gérer les bouton en Java ou en XML

Cet exemple montre qu'il est généralement possible d'assigner un gestionnaire d'événement aussi bien dans le code Java que dans le code XML. La deuxième approche comporte toutefois un désavantage : on ne voit pas, si on regarde seulement le code Java, quels composants pourront être à l'origine des événements traités.

MainActivity.java

package net.codeandroid.gererlesboutons;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private LinearLayout fenetre;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fenetre = (LinearLayout)findViewById(R.id.fenetre);

        Button btnRouge = (Button)findViewById(R.id.btn_rouge);
        Button btnJaune = (Button)findViewById(R.id.btn_jaune);

        btnRouge.setOnClickListener(this);
        btnJaune.setOnClickListener(this);
    }

    // gestionnaire de clics assigné dans le code Java (on sait que les clics
    // proviennent des boutons rouge et jaune)
    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_rouge) {
            fenetre.setBackgroundColor(Color.RED);
        } else if (v.getId() == R.id.btn_jaune) {
            fenetre.setBackgroundColor(Color.YELLOW);
        }
    }

    // gestionnaire de clics assigné dans le fichier XML de mise en page (il est
    // impossible de savoir d'où proviennent les clics sans regarder le code XML)
    public void changerCouleur(View v) {
        if (v.getId() == R.id.btn_vert) {
            fenetre.setBackgroundColor(Color.GREEN);
        } else if (v.getId() == R.id.btn_bleu) {
            fenetre.setBackgroundColor(Color.BLUE);
        }
    }
}

activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fenetre"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_rouge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="Rouge" />

    <Button
        android:id="@+id/btn_jaune"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="Jaune" />

    <Button
        android:id="@+id/btn_vert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="Vert"
        android:onClick="changerCouleur" />

    <Button
        android:id="@+id/btn_bleu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="Bleu"
        android:onClick="changerCouleur" />

</LinearLayout>