2010-11-06 42 views
1

Je suis nouveau sur Android, et le code axé sur les événements en général. Plutôt que d'incorporer des charges de classes d'écouteurs d'événements anonymes dans mon Activity pour gérer les événements onClick etc, j'ai défini des classes séparées pour garder le code propre. Ensuite, je les utilise par exemple. comme ceciPassage des informations de EventListener à l'activité

myButton.setOnClickListener (new MyEventListener()); Donc, quand on clique sur 'myButton', la méthode onClick de MyEventListener fait des choses.

Je voulais connaître les meilleures pratiques pour

a) l'accès à des choses dans mon activité de l'écouteur d'événement. Par exemple pour changer le texte d'une étiquette. L'événement onClick prend une vue dans, mais c'est la vue pour le bouton qui a été cliqué, donc si l'étiquette n'est pas un enfant de mon bouton, je ne peux pas utiliser findViewById pour obtenir un handle. J'ai modifié le constructeur pour faire passer une référence à l'étiquette, de sorte que l'événement ait une prise en main, mais je ne sais pas si c'est la façon la plus élégante de le faire.

b) Réacheminement d'informations par ex. Lorsque mon événement se déclenche, je souhaite désactiver certains champs EditText. Je pense que la meilleure façon de le faire est probablement d'envoyer un autre événement de mon écouteur d'événement, que l'activité écoute, et quand il voit l'événement, désactive les champs en question. Est-ce la façon de le faire dans Android?

J'espère que quelqu'un peut aider, vraiment l'apprécier.

Merci

Répondre

2

Une alternative à l'utilisation des écouteurs d'événements explicites, anonymes ou non, est d'utiliser le onClick attribut xml à être envoyé directement à une méthode comme dans l'exemple suivant:

Mise en page fichier xml :

<Button android:onClick="buttonClickedCallback" /> 

maintenant simple, définir une méthode sur votre activité:

class CustomActivity extends Activity { 
    public void buttonClickedCallback(View clickedButton) { 
     // do stuff 
    } 
} 

Ceci est disponible depuis Android 1.6 comme décrit dans UI framework changes in Android 1.6.

+0

Salut, merci pour la réponse rapide. Juste essayé ce que vous avez suggéré et c'est beaucoup plus propre - merci! Aimer Android :) – Richard