2010-12-03 18 views
2

Ich habe 4 Aktivitäten, die alle eine xml-Fußzeile enthalten, die 4 Schaltflächen enthält (eine für jede Aktivität). Ich möchte jetzt onclicklisteners zu diesen Tasten einrichten (es ist ein selbst gemachtes Menü in der Fußzeile).Mehrere Aktivitäten mit dem gleichen Listener

Die Frage ist, wie verwende ich Listener, so dass ich Code wiederverwenden kann? Ich habe zwei Ideen:

  1. Erstellen Sie eine Klasse, die in jeder Aktivität implementiert OnClickListener und ich würde die Tasten und dann eine neue Instanz der Listener-Klasse erstellen und tun button.setOnClickListener (OnClickListener) Das Problem ist, Wie würde ich in der Hörerklasse prüfen, welcher Button das Event heißt? Und wie würde ich eine Absicht erstellen, um eine Aktivität zu starten, normalerweise würde ich tun: Absicht intent = neue Absicht (FromActivity.this, ToAcitivty.class) Aber ich habe nicht den Verweis auf FromActivity.

  2. Erstellen Sie eine Basisklasse, die sich von Aktivität erstreckt, und dann werden die 4 Aktivitäten von der Basisklasse erweitert. Ich möchte dann die Listener in der Basisklasse einrichten. Das Problem hier ist, dass ich die Verweise auf die Knöpfe nicht erhalten kann, indem ich mache Knopf button1 = (Knopf) findViewById (R.id.menu_button1); Button1 wird null sein. Ich habe setEventView nicht einmal aufgerufen, da dies in der Aktivität ausgeführt werden sollte, nicht in der Basisklasse.

Irgendwelche Ideen?

Danke

Antwort

1

Same-Code ist hier:.

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; 
     } 
    } 

(wie die ursprüngliche erste Zeile bearbeitet auf Code-Format gebrochen

+1

Danke, das perfekt funktioniert und wenn ich hatte ein. Button, der nur bei einer Aktivität existierte, würde ich nur überprüfen, ob es diese Schaltfläche war, sonst würde ich super.onClick (view) machen. – Andreas

Verwandte Themen