Non, ce n'est pas possible via le code. Android implémente simplement le OnClickListener
pour vous lorsque vous définissez le android:onClick="someMethod"
attribut.
Ces deux extraits de code sont identiques, ils sont simplement mis en œuvre de deux manières différentes.
Mise en œuvre du code
Button btn = (Button) findViewById(R.id.mybutton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myFancyMethod(v);
}
});
// some more code
public void myFancyMethod(View v) {
// does something very interesting
}
Ci-dessus, vous trouverez un code d'implémentation d'un OnClickListener
. Et voici l'implémentation XML.
Mise en œuvre de XML
<?xml version="1.0" encoding="utf-8"?>
<!-- layout elements -->
<Button android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me!"
android:onClick="myFancyMethod" />
<!-- even more layout elements -->
En arrière-plan, Android ne fait rien d'autre que le code Java, appelant votre méthode sur un événement de clic.
Notez qu'avec le XML ci-dessus, Android recherchera le fichier onClick
méthode myFancyMethod()
uniquement dans l'activité en cours. Il est important de s'en souvenir si vous utilisez des fragments, car même si vous ajoutez le XML ci-dessus en utilisant un fragment, Android ne cherchera pas la balise onClick
dans la méthode .java
du fragment utilisé pour ajouter le XML.
Une autre chose importante que j'ai remarquée. Vous avez dit que vous ne préférez pas l'anonymat méthodes . Vous vouliez dire que vous n'aimez pas les anonymes. classes .
5 votes
J'ai lu votre problème et je pense que vous êtes coincé au même endroit que moi. Je suis tombé sur une très bonne vidéo qui m'a beaucoup aidé à résoudre mon problème. Trouvez la vidéo sur le lien suivant : youtube.com/watch?v=MtmHURWKCmg&feature=youtu.be J'espère que cela vous aidera aussi :)
9 votes
Pour ceux qui veulent gagner du temps en regardant la vidéo postée dans le commentaire ci-dessus, elle démontre simplement comment deux boutons peuvent avoir la même méthode pour son
onClick
dans le fichier de mise en page. Cela se fait grâce au paramètreView v
. Il vous suffit de vérifierif (v == findViewById(R.id.button1
)) etc.14 votes
@Imray Je pense qu'il est préférable d'utiliser
v.getId() == R.id.button1
puisque vous n'avez pas besoin de trouver le contrôle réel et de faire une comparaison. Et vous pouvez utiliser unswitch
au lieu de beaucoup de "si".0 votes
L'utilisation de xml Android:onClick provoque un crash.