Android - setOnClickListener vs OnClickListener vs Anzeigen.OnClickListener
Mein Verständnis ist, dass wenn ich das erstellen einer button-Objekt Listener für einen Klick, ich habe auf:
- Erstellen Sie die Schaltfläche Objekt
- Verwenden
OnClickListner
zu machen, hört der Benutzer auf - Verwenden
onClick
um Aktionen auszuführen, nachdem der Benutzer auf die Schaltfläche klickt
Nun,
- Wo kommt
setOnClickListener
passen in den oben genannten Logik? - Die man hört tatsächlich auf den button klicken?
setOnClickListener
?OnClickListener
?View.OnClickListener
?- Was sind die Unterschiede zwischen den drei?
Hier ist was ich gefunden in Android-Dev:
//The example below shows how to register an on-click listener for a Button.
//Create an anonymous implementation of OnClickListener
private OnClickListener mCorkyListener = new OnClickListener() {
public void onClick(View v) {
//do something when the button is clicked
}
};
protected void onCreate(Bundle savedValues) {
...
//Capture our button from layout
Button button = (Button)findViewById(R.id.corky);
//Register the onClick listener with the implementation above
button.setOnClickListener(mCorkyListener);
...
}
Können Sie auch finden es bequemer zu implementieren OnClickListener
als Teil Ihrer Activity
. Damit vermeiden Sie, dass der extra-Klasse laden-und Objekt-Zuordnungen. Zum Beispiel:
public class ExampleActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedValues) {
...
Button button = (Button)findViewById(R.id.corky);
button.setOnClickListener(this);
}
//Implement the OnClickListener callback
public void onClick(View v) {
//do something when the button is clicked
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Logik ist einfach.
setOnClickListener
gehört Sie zu Schritt 2.OnClickListener
* wie es gemacht wird in diesem Beispiel und setzen dieonClick
-Methode.OnClickListener
Taste mitbtn.setOnClickListener(myOnClickListener);
in Ihre Fragmente/AktivitätenonCreate
-Methode.onClick
Funktion der zugeordnetenOnClickListener
genannt wird.*Wenn Sie
import android.view.View;
Sie verwendenView.OnClickListener
. Wenn Sieimport android.view.View.*;
oderimport android.view.View.OnClickListener;
Sie verwendenOnClickListener
so weit wie ich es bekomme.Andere Möglichkeit ist, lassen Sie activity/fragment Erben von
OnClickListener
. Auf diese Weise ordnen Sie Ihre fragment/activity als listener für Ihre Schaltfläche und implementierenonClick
als member-Funktion.Mir vorstellen, dass wir 3 Knöpfe zum Beispiel
Also, was werden wir tun?
Oder wir dies tun können:
Bzw. realisieren wir für Sie Anzeigen.OnClickListener und ich denke, es ist der beste Weg:
Schließlich gibt es keine wirklichen Unterschiede hier Nur "Art und Weise besser als die anderen"
Bitte beachten Sie, dass der Einfachheit halber die ich gemacht habe, verweisen nur auf die erste code-snippet, d.h.,
setOnClickListener(View.OnClickListener l)
ist eine public-Methode der View-Klasse. Button-Klasse erweitert die Klasse Ansicht und können daher rufensetOnClickListener(View.OnClickListener l)
Methode.setOnClickListener registriert eine callback aufgerufen, wenn die view (button in deinem Fall) geklickt wird. Diese Antworten sollten die Antwort auf Ihre ersten beiden Fragen:
1. Wo kommt
setOnClickListener
fit in der obigen Logik?Ans. Es registriert einen callback, wenn die Schaltfläche geklickt wird. (Ausführlich im nächsten Absatz).
2. Die man hört tatsächlich auf den button klicken?
Ans.
setOnClickListener
Methode ist der, der hört tatsächlich auf die Schaltfläche klicken.Wenn ich sage, es registriert eine callback aufgerufen werden, was ich meine ist, es wird ausgeführt, die
View.OnClickListener l
ist, dass die input-parameter für die Methode. In Ihrem Fall, es wirdmCorkyListener
erwähnt inbutton.setOnClickListener(mCorkyListener);
wird dann die Methode auszuführenonClick(View v)
erwähnt inBewegen Sie sich auf weitere,
OnClickListener
ist eine Interface-definition für einen callback aufgerufen, wenn eine Ansicht (mit der Schaltfläche in Ihrem Fall) geklickt wird. Einfach zu sagen, wenn Sie auf diesen button klicken, werden die Methoden inmCorkyListener
(weil es eine Umsetzung vonOnClickListener
) ausgeführt werden. AberOnClickListener
nur eine Methode, dieOnClick(View v)
. Deshalb, was auch immer Aktion, die durchgeführt werden muss beim Klick auf den button muss codiert werden, innerhalb dieser Methode.Nun, Sie wissen, was
setOnClickListener
undOnClickListener
meine, ich bin sicher, dass Sie werde in der Lage sein, zwischen den beiden zu unterscheiden sich. Der Dritte BegriffView.OnClickListener
ist eigentlichOnClickListener
selbst. Der einzige Grund, Sie habenView.
vor es ist, weil der Unterschied in derimport
- Anweisung am Anfang des Programms. Wenn Sie nurimport android.view.View;
wie der import-Anweisung müssen SieView.OnClickListener
. Wenn Sie erwähnen, diese beiden import-Anweisungen:import android.view.View.*;
oderimport android.view.View.OnClickListener;
können Sie überspringen dieView.
und verwenden Sie einfachOnClickListener
.Sicht ist die Superklasse für alle widgets und die OnClickListener Schnittstelle gehört zu dieser Klasse. Alle widgets Erben diese. Blick.OnClickListener ist das gleiche wie OnClickListener. Würden Sie überschreiben, wird die onClick(View View) - Methode aus dieser Hörer zu erreichen, die Aktion, die Sie möchten für Ihre-Taste.
Sagen Android zu hören klicken Sie auf Veranstaltungen für ein widget, die Sie tun müssen:
Den 'View' - parameter übergeben, onClick () - Methode einfach können Sie Android-wissen, dass eine Ansicht geklickt wurde. Es kann eine Schaltfläche oder einen TextView oder etwas anderes. Es ist bis zu Ihnen, um ein OnClickListener für jedes widget oder einfach die Klasse, die alle diese widgets, die das interface implementieren. In diesem Fall müssen Sie eine gemeinsame onClick () - Methode für alle widgets und alles, was Sie tun müssen, ist überprüfen Sie die id der view übergeben wird, in der Methode und dann übereinstimmen, die gegen die id für jedes element, das Sie möchten, und nehmen Sie eine Aktion für dieses element.
Erstens, es gibt keinen Unterschied zwischen
View.OnClickListener
undOnClickListener
. Wenn Sie nurView.OnClickListener
direkt, dann brauchen Sie nicht zu schreiben-import android.Blick.Blick.OnClickListener
Legen Sie ein OnClickListener Instanz (z.B.
myListener
benanntes Objekt)als listener zu einer Ansicht übersetOnclickListener()
. Wenn einclick
- Ereignis ausgelöst wird, dassmyListener
informiert wird, und es istonClick(View view)
- Methode aufgerufen wird. Das ist, wo wir haben unsere eigene Aufgabe.Hoffe, dies hilft Ihnen.