Je voudrais vous présenter un exemple concret de l'interface utilisée lors de la création d'une application Android.
L'auditeur ici est défini dans View.java
.
Avec AndroidStudio, vous pouvez accéder à l'emplacement défini dans la classe avec command + B
, veuillez donc le vérifier.
Il est parfois appelé un écouteur d'événements.
Utilisé lors de la programmation avec plusieurs threads.
Référence: Processus et threads de développement Android
Prenons OnClickListener comme exemple.
Transmettez l'interface en tant qu'argument à la méthode setOnClickListener de la classe View.
Button button = new Button(this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Que faire lorsque vous cliquez sur le bouton
}
});
Vous pouvez également l'affecter à une variable à l'avance. (Je ne le ferai pas ...)
Button button2 = new Button(this);
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//Que faire lorsque vous cliquez sur le bouton
}
};
button2.setOnClickListener(onClickListener);
La nouvelle grammaire implémentée dans Java8, Lambda, nécessite une préparation pour une utilisation sur Android.
Référez-vous à ce site,
app/build.gradle
android {
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Ajoutez les deux endroits ci-dessus.
À ce stade, il est nécessaire que la version de gradle soit 2.1.0 ou supérieure dans gradle-wrapper.properties.
Button button3 = new Button(this);
button3.setOnClickListener((View v)->{
//Que faire lorsque vous cliquez sur le bouton
});
Il ne semble pas y avoir de réponse claire à "comment dois-je l'écrire?"
C'est un petit article ancien,
Personnellement, j'aime écrire dans des classes anonymes, et je n'aime pas vraiment implémenter des implémentations dans Acitivyt ou Fragment (parce que cela semble bizarre orienté objet ...)