[Android / Java] Comprendre le type de description dans les paramètres d'écoute (installation du bouton)

introduction

Divers écouteurs qui apparaissent dans le développement d'applications Android. Il y a deux modèles principaux pour écrire dans un fichier java, et c'était déroutant, donc je vais l'écrire sous forme de mémorandum.

Cet exemple est une application qui affiche un message lorsque vous appuyez sur un bouton.

Confirmation des conditions

Evénement: Une opération à effectuer sur l'écran (exemple: clic) Gestionnaire d'événements ・ ・ ・ Traitement à effectuer pour l'événement (Exemple: Afficher le texte lorsque l'utilisateur clique dessus) Auditeur: quelque chose qui détecte un événement (exemple: bouton)

code

La mise en page est adaptée.

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="bouton"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/text" />

</androidx.constraintlayout.widget.ConstraintLayout>

Modèle 1: décrire séparément le gestionnaire d'événements et d'événements et l'auditeur

MainActivity.java


public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //Réglage de l'écouteur (bouton de détection d'événement installé)
        Button button1 = findViewById(R.id.btn);
        button1.setOnClickListener(new TestListener());
    }

    //Créer une classe d'auditeur(Cliquez sur le bouton+Affichage du texte)
    private class TestListener implements View.OnClickListener {
        @Override
        public void onClick(View view) {
            TextView textView = findViewById(R.id.text);
            textView.setText("J'ai cliqué sur le bouton1");
        }
    }
}

Modèle 2: Décrivez les événements, les gestionnaires d'événements et les auditeurs ensemble

MainActivity.java


public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Décrivez tous ensemble
        Button button2 = findViewById(R.id.btn);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TextView textView = findViewById(R.id.text);
                textView.setText("J'ai cliqué sur le bouton 2");
            }
        });
    }
}

finalement

Bouton In ・ SetOnClickListener ・ View.OnClickListener · Sur clic Puisque le flux est décidé, reconnaissez-le comme un ensemble.

Post-scriptum (01/11/2020)

J'en ai introduit deux, mais il semble que View.OnClickListener est défini avec une classe anonyme de base. Par conséquent, le modèle 1 doit être utilisé comme référence pour comprendre la structure!

Recommended Posts

[Android / Java] Comprendre le type de description dans les paramètres d'écoute (installation du bouton)
[Android] Je souhaite obtenir l'auditeur à partir du bouton de ListView
Référence Java à comprendre dans la figure
Le type d'intersection introduit dans Java 10 est incroyable (?)
Mémo organisé dans la tête (Java - type de données)
Détermination de type en Java
Classes et instances Java comprises dans la figure
Reportez-vous à C ++ dans le module Android Studio (Java / kotlin)
[Android, Java] Méthode pratique pour calculer la différence en jours
Essayez le type fonctionnel en Java! ①
Accéder à l'interface réseau avec Java
Essayez d'implémenter Android Hilt en Java
Devinez le code de caractère en Java
Décompressez le fichier zip en Java
Comprenons le type Array (Element)!
Analyser l'analyse syntaxique de l'API COTOHA en Java
Paramètres de débogage SSL dans Java
Comprenons le type facultatif (enveloppé)!
Appelez la super méthode en Java
[Android] Contrôlez facilement l'événement lorsque vous appuyez sur le bouton Retour dans Fragment
[Java] Afficher la chaîne de bits stockée dans la variable de type d'octet sur la console
Qu'est-ce qui n'était pas une utilisation équitable du détournement d'API Java sur Android?
Raison pour ajouter L au nombre à mettre en type long Java
Comprendre la différence entre int et Integer et BigInteger en java et float et double
[Android Studio] Description qui peut être saisie en continu dans la base de données SQLite [Java]