Frage

Ich habe 4 Aktivitäten, dass alle eine xml-Fußzeile enthalten, die 4 Tasten enthält (eine für jede Aktivität). Ich möchte nun auf Setup onclicklisteners diesen Tasten (es ist ein Eigenbau-Menü in der Fußzeile).

Die Frage ist, wie kann ich Hörer verwenden, so dass ich Code wiederverwenden? Ich habe zwei Ideen:

  1. Erstellen Sie eine Klasse, die implementiert OnClickListener und bei jeder Tätigkeit i die Tasten bekommen würde und dann eine neue Instanz der Listener-Klasse erstellen und tun button.setOnClickListener (OnClickListener) Das Problem ist, dass in der Listener-Klasse, wie würde ich die Taste überprüfe das Ereignis aufgerufen? Und wie würde ich eine Absicht schaffen eine Aktivität zu starten, in der Regel würde ich tun: Absicht Absicht = new Intent (FromActivity.this, ToAcitivty.class) Aber ich habe nicht den Verweis auf FromActivity.

  2. Erstellen Sie eine Basisklasse, die aus der Tätigkeit erstreckt und dann die 4 activies werden von der Basisklasse erweitern. Ich würde dann auf Setup wie die Hörer in der Basisklasse. Das Problem hier ist, dass ich nicht die Verweise auf die Tasten bekommen kann, indem Sie Button button1 = (Button) findViewById (R.id.menu_button1); button1 wird null sein. Ich habe nicht einmal genannt setEventView weil dies sollte in der Tätigkeit nicht in der Basisklasse erfolgen.

Irgendwelche Ideen?

Danke

War es hilfreich?

Lösung

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top