Hören Sie auf ENTER-Taste in Android
Hier ist mein code:
public class CaptureENTER extends Activity implements OnKeyListener{
/* on create and other stuff in here*/
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
Toast.makeText(LiVoiceActivity.this,
"YOU CLICKED ENTER KEY",
Toast.LENGTH_LONG).show();
}
return false;
}
Ich weiß nicht, was Los ist, aber wenn ich drücken Sie die ENTER-Taste bei meiner Tastatur (ich bin mit dem Android-emulator), das Ereignis wird nicht aktiviert.
Was bin ich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rückkehr
true
ist nicht das Problem.Sind Sie scheitern, weil Sie müssen die Zuhörer auf eine
View
, nicht nur dieActivity
.editiert zur Klarstellung:
Den Rückgabewert der Hörer soll nicht als signal verstanden, dass das Ereignis sein wird oder nicht genannt. Und es konnte nicht ohnehin, seit die
return
- Klausel wird nur aufgerufen nach IhreToast
angezeigt.Es ist ein signal an das system, dass weitere Maßnahmen erforderlich (return
false
) oder, dass die Methode behandelt den Fall vollständig und richtig (zurücktrue
). Das ist, warum die Dokumentation sagt diese Worte:Gibt es einen Unterschied zwischen:
View.OnKeyListener
interface
in IhremActivity
Klasse.Ermöglicht Ihre
Activity
zu implementieren, die die Funktionalität durch das interface in Ihrer Klasse, d.h., zu erklären der Welt, dass IhrActivity
weiß, wie zu behandeln, dass Art von Veranstaltung.Bitte achten Sie auf die Tatsache, dass ich sagte: "erklären". Nur weil Sie erklärte, dass Sie wissen, wie zu behandeln, eine Aufgabe bedeutet nicht, Menschen geben wird, die Aufgabe für Sie, noch bedeutet es, dass Sie erzeugen kann, die solche Aufgaben selbst. Es ist eine gute Metapher für die
implements
Stichwort meiner Meinung nach. Hier dieActivity
", fragt eine Aufgabe".Metaphern beiseite, technisch, die
Activity
ist die Bestimmung der Art und Weise zu handhaben, die Veranstaltung, aber man kann es nicht erzeugen diese Art von event-von selbst.View
Rückrufe zu IhremActivity
UmsetzungVerwenden, dass eine
View
bindet einen listener (was passiert zu sein IhreActivity
), verspricht benachrichtigt wird, sobald das Ereignis passiert.Es "Verträge" mit Ihrem
Activity
zum empfangen einer Eingabe (der Benutzer drückt die ENTER-Taste, während dieView
im Fokus ist) und benachrichtigt dieActivity
. Und da dieActivity
zuvor erklärt, dass er in der Lage ist, dass die Durchführung, BEIDE Parteien kann die Ausführung des Auftrages vereinbarungsgemäß (siehe vorheriger Punkt).Metaphern beiseite erneut, technisch, hier die
Activity
registriert durch dieView
werden später informiert, wenn derView
das Ereignis auszulösen. DieActivity
erklärt wie, aber dieView
weiß wenn.Fazit:
Dies ist nur eine Metapher für
interface
s (zumindest in diesem Fall). Es kann kompliziert Aussehen, aber es ist glasklar, wenn Sie denken, es als eine zwei-Parteien-Vertrag. Wenn Sie brauchen eine bessere, technische, Erklärung, schlage ich die Lektüre überinterface
s.Antwort auf die neue Kommentar-Frage:
Nicht in dieser Weise. Sie überschreiben müssen
dispatchKeyEvent
. Ein Beispiel:Versuchen Sie dies:
EDIT:
David ist RICHTIG!!!!!
True zurückgeben ist nicht das Problem.
Sind Sie scheitern, weil Sie müssen, legen Sie den Hörer auf einem Blick, nicht nur die Aktivität.