Ich habe eine benutzerdefinierte TextView, die anklickbar ist. Es definiert seinen eigenen onClick-Handler, um seine Darstellung basierend auf Klicks zu ändern. Wenn ich dann jedoch einen zweiten onClick-Handler in meiner Aktivität definiere, um etwas basierend auf der angeklickten Schaltfläche zu tun, wird nur eine der onClick-Funktionen aufgerufen. onClick ist eine void-Funktion - gibt es eine Möglichkeit zu sagen, dass ich diesen Klick nicht verarbeitet habe, bitte weiterleiten an andere onClick-Handler?Android - Zwei onClick-Listener und eine Schaltfläche
Um hier mehr klar ist der Code:
Innen MyCheckButton die Textview erweitert ich habe:
setOnClickListener(mClickListener);
private OnClickListener mClickListener = new OnClickListener() {
public void onClick(View v) {
toggle();
}
};
aber ich MyCheckButton in meiner Tätigkeit gehören, und natürlich muss ich etwas tun, wenn seine so lege ich ein anderes OnClickListener es angeklickt:
MyCheckButton button= (MyCheckButtonButton) findViewById(R.id.cb);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// do something in the app
}
});
Durch den Aufruf setOnClickListener zweimal scheint es, dass ich die Original-Hörer bin ersetzt so tog gle(), das die Erscheinung ändert, wird nie aufgerufen. Wie kann ich etwas in meiner Aktivität tun, wenn diese Schaltfläche angeklickt wird, wenn sie bereits den onClick-Handler verwendet, um ihre Darstellung zu ändern? Ich dachte, ich würde einfach sehen, dass beide OnClickListeners angerufen werden.
yeah Ich denke, Sie haben Recht damit, Sie könnten auch versuchen, ein onClick-Attribut in Ihrer XML-Datei zu geben und zu sehen, ob es Ihre Methode nach dem Setzen eines onClickListeners noch aufrufen würde. – schwiz
Ich vermute, das ist kein Event-Bubbling-Problem und mein Problem ist, dass Sie nicht zwei OnClickListeners zur gleichen Ansicht hinzufügen können ??? Das ist anderswo Standard, also bin ich verwirrt. – Mark
Wenn ich das xml onClick verwende, setzt setOnClickListener es außer Kraft. – Mark