453 votes

Comment gérer les clics de bouton en utilisant l’onClick xml au sein de Fragments

Pré-Nid d'abeille, chaque Activité a été enregistrée pour gérer les clics de bouton via l' onClick balise dans une Mise en page XML.

android:onClick="myClickMethod"

Dans cette méthode, vous pouvez utiliser view.getId() et une instruction switch pour faire le bouton de la logique.

Avec l'introduction de Nid d'abeille, je suis en rupture de ces Activités dans les Fragments qui peuvent être réutilisés à l'intérieur de nombreuses Activités différentes. La plupart du comportement des boutons est une Activité indépendante et je voudrais le code de résider à l'intérieur de l'Fragments de fichier sans l'aide de l'ancien (pré 1.6) méthode d'enregistrement de l' OnClickListener pour chaque bouton.

 final Button button = (Button) findViewById(R.id.button_id);
     button.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             // Perform action on click
         }
     });

Le problème est que lors de ma mise en page sont gonflés, il est encore l'Activité d'hébergement, qui reçoivent un clics de bouton, pas les différents Fragments. Est-il une bonne approche de soit

  • Enregistrer le fragment de recevoir les clics de bouton?
  • Passez le sur les événements à partir de l'Activité pour l'fragment ils appartiennent?

613voto

Adorjan Princz Points 3601

Je préfère utiliser la solution suivante pour gérer les événements onClick. Cela fonctionne aussi bien pour l’activité et de Fragments.

177voto

Blundell Points 28342

Pourriez-vous pas juste faire ceci :

Activité :

Fragment :


En réponse à @Ameen qui voulait moins de couplage Fragments sont réutilisables

Interface :

Activité :

Fragment :

32voto

Brill Pappin Points 1662

Le problème que selon moi est que l’opinion est encore l’activité, pas le fragment. Les fragments n’a aucune vision indépendante de son propre et est attaché à la vue d’activités parent. C’est pourquoi l’événement se termine dans l’activité, pas le fragment. Son malheureux, mais je pense que vous aurez besoin du code pour que cela fonctionne.

Ce que je fais pendant les conversions est simplement ajout d’un écouteur de clic qui appelle le gestionnaire d’événements anciens.

par exemple :

7voto

userSeven7s Points 14480

Je pencherais plutôt pour le clic de manutention dans le code que l’utilisation de la attribut XML lorsque vous travaillez avec des fragments. Cela devient encore plus facile lors de la migration de vos activités aux fragments. Vous pouvez simplement appeler le gestionnaire click (précédemment défini sur en xml) directement à partir de chaque `` bloc.

Quand il vient aux clics de la manutention dans les fragments, cela semble plus simple pour moi que `` .

6voto

Euporie Points 359

Il s’agit d’une autre manière :

  1. Créez un BaseFragment comme ceci :

  2. utilisation

Au lieu de

  1. dans votre activité :

et

Elle pourra être qu'utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X