Wie geht man mit mehreren Buttons und OnClickListenern um?

7

Ich habe in 16 Button s (Zahlen, plus, minus usw.) in meiner Layout-XML-Datei.

Ich frage mich, wie man überprüft, welche Taste gedrückt wurde.

Meine Idee ist, dass ich für jede Schaltfläche onClick() Methode verwenden werde, aber diese Methode ist ein wenig unpraktisch, weil ich 16 dieser onClick() Methoden für jede Schaltfläche haben werde.

Gibt es einen eleganteren Weg?

    
user1946705 13.04.2011, 08:29
quelle

6 Antworten

19

Sie können alle in einer einzigen Klasse behandeln, die OnClickListener implementiert, oder in der Aktivitätsklasse, wenn Sie möchten ...

%Vor%     
user433579 13.04.2011 08:42
quelle
6

Sie können einen Handler verwenden, den Sie nicht als anonyme innere Klasse, sondern in einer separaten Klasse definieren. onClick() wird die übergebene Ansicht erhalten und Sie können daraus auswählen.

%Vor%

und dann in deiner layout.xml einfach für jede Schaltfläche setzen

%Vor%     
Heiko Rupp 13.04.2011 08:34
quelle
4

Sicher. Erstellen Sie ein Array von button-ids und weisen Sie ihnen denselben Listener (eine Implementierung von View.OnClickListener - definiert als separate Klasse, nicht als anonyme Klasse) in einer Schleife zu. Im Listener können Sie überprüfen, welche Schaltfläche gedrückt ist (indem Sie den view -Parameter in onClick() method vergleichen).

In Aktivität:

%Vor%

In der onClick-Methode:

%Vor%     
MByD 13.04.2011 08:35
quelle
2

Sie müssen 16 Klick-Listener nicht erwähnen. Erstellen Sie eine Eins und hängen Sie sie an jede Schaltfläche an. Die onClick () -Methode ruft eine Ansicht als Parameter ab. Diese Ansicht ist deine Schaltfläche. Überprüfen Sie einfach die ID oder den Namen.

    
Vladimir Ivanov 13.04.2011 08:33
quelle
2
%Vor%     
Ravindra Pawar 27.12.2011 10:16
quelle
0

Normalerweise mache ich so etwas:

%Vor%

Initiieren Sie die Schaltflächen mit einer ID-Nummer in der Hauptklasse wie folgt:

%Vor%

Das ist ordentlich, wenn Sie eine große Anzahl von Tasten haben, wie Sie es tun, und für alle denselben Listener verwenden möchten. Prost!

    
hacke 02.07.2015 17:49
quelle

Tags und Links