Listener sur les boutons
Sous Android, mais ce n'est pas le seul, pour connaître le bouton pressé, il faut utiliser un listener. Ce listener va se mettre à l'écoute des boutons et déclencher une méthode lorsque l'un d'eux est pressé.
Comment faire:
Sur l'objet bouton que vous voulez écouter, vous allez utiliser la méthode setOnClickListener() en lui indiquant une instance de classe dans laquelle se trouvera une méthode qui doit être déclenchée en cas de pression sur ce bouton.
Cette méthode doit s'appelée public void onClick(View view) et recevra une instance de View (Pour rappel, les boutons dérivent de View). Or c'est l'instance du bouton pour lequel il y a pression que vous allez recevoir en paramètre.
Il faudra implémenter cette méthode, donc : implements OnClickListener
Exemple de cas de définition
Dans la classe principale de votre activité.
En reprenant un projet type helloWorld, voici le main.xml, dans lequel j'ajoute simplement un bouton
Et dans strings.xml, le texte du bouton:
code:
Nous n'avons pas encore vu la classe Toast, il s'agit simplement d'afficher pendant quelques secondes un message.
Nous recherchons l'instance du bouton à partir de son identifiant. Sur cette instance, nous positionnons un listener.
Il est courant d'utiliser une classe anonyme pour définir un listener. L'écriture du code sera alors la suivante:
Rappel, une classe
anonyme peut accéder aux methodes et aux attributs de la classe l'englobant.
Il est donc tout à fait possible de tester button1 directement sans récupérer
l'id du bouton:
if (view==button1){
Toast.makeText(HelloActivity.this,"Bouton 1", Toast.LENGTH_SHORT).show();}
Mais il faudra dans ce cas définir globalement button1 ou comme final.
Par contre, Il faudra préciser dans Toast: HelloActivity.this et non plus simplement this (mais c'est une autre histoire).
Autre solution
Une autre solution consiste à utiliser l'attribut android:onClick="maMethodeClick" ou maMethodeClick sera une méthode permettant de gérer le clic de l'objet:
public void maMethodeClick(View view) {
}