2010-12-03 41 views
2

J'ai 4 activités qui incluent toutes un xml-footer qui contient 4 boutons (un pour chaque activité). Je voudrais maintenant configurer onclicklisteners à ces boutons (c'est un menu self made dans le pied de page). La question est, comment puis-je utiliser les écouteurs afin que je puisse réutiliser le code? J'ai deux idées:Plusieurs activités utilisant le même écouteur

  1. créer une classe qui implémente onclicklistener et dans toutes les activités que je recevrais les boutons, puis créer une nouvelle instance de la classe d'auditeur et faire button.setOnClickListener (onClickListener) Le problème est que dans la classe des écouteurs, comment puis-je vérifier quel bouton a appelé l'événement? Et comment pourrais-je créer une intention de démarrer une activité, généralement je ferais: intention intention = new Intent (FromActivity.this, ToAcitivty.class) Mais je n'ai pas la référence à FromActivity.

  2. Créez une classe de base qui s'étend de l'activité, puis les 4 activités s'étendront à partir de la classe de base. Je voudrais ensuite configurer les écouteurs dans la classe de base. Le problème ici est que je ne peux pas obtenir les références aux boutons en faisant Button button1 = (Button) findViewById (R.id.menu_button1); button1 sera null. Je n'ai même pas appelé setEventView parce que cela devrait être fait dans l'activité pas dans la classe de base.

Des idées?

Merci

Répondre

1

Même code est ici.

public class MyClass extends Activity implements View.OnClickListener{ 
     btnA=(Button)findViewById(R.id.btnA); 
     btnA.setOnClickListener(this); 
     btnB=(Button)findViewById(R.id.btnB); 
     btnB.setOnClickListener(this); 


    } 
    @Override 
    public void onClick(View v) 
    { 
     Button clickedButton = (Button) v; 
     switch (clickedButton.getId()) 
     { 
      case R.id.btnA: 
       Intent regIntent = new Intent(Home.this,Registration.class); 
       startActivityIfNeeded(regIntent, 1); 
       break; 
      case R.id.btnB: 
       //Some code 
       break; 
     } 
    } 

(édité comme la première ligne d'origine est cassé sur le format de code

+1

Merci, cela a fonctionné parfaitement et si j'avais. bouton qui existait seulement sur une activité je voudrais juste vérifier si c'était ce bouton, ou bien je ferais super.onClick (voir). – Andreas