Ich habe einen OnKeyListener an einen EditText angehängt. Ich habe den onKey-Handler überschrieben, um ein KeyEvent zu erfassen.Enter-Taste bei EditText zweimaliges Drücken auf OnKey
Wenn ein Benutzer die Eingabetaste drückt (entweder die Eingabetaste des Computers bei Verwendung des Emulators oder die Hardware-Eingabetaste auf dem Telefon mit einer Hardwaretastatur), wird der onKey-Handler zweimal ausgeführt. Beide Ausführungen haben den keyCode 66.
Warum passiert das?
Ich möchte mein Bildschirm so, wenn der Benutzer die Eingabetaste drückt, wird eine Suche durchgeführt. Wegen dem, was passiert, passiert die Suche unnötigerweise zweimal.
Meine Methode sieht wie folgt aus:
mFilter.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
// perform search
return true;
}
return false;
}
});
Wahrscheinlich. Überprüfen Sie das 'KeyEvent', nicht nur den Code. Ich habe in der Vergangenheit einige Probleme mit der HTC-Tastatur gefunden, die manchmal mehrere Ereignisse auslösen (und manchmal spazieren Benutzer einfach mehrmals auf "Enter"), so dass Sie vielleicht eine Instanzvariable in Ihrem Listener behalten möchten, um nur zu verfolgen, wann Die Aktion wurde ausgelöst, um ein versehentliches zweites Schießen zu verhindern. –
Gute Idee. Ich denke, wenn die Suchaufgabe startet, werde ich eine weitere Aufgabe mit einem Timer von ein paar Sekunden starten und bis dieser Thread beendet ist, wird der Benutzer nicht mehr in der Lage sein, die Eingabetaste zu drücken. – Andrew
Dies sollte nicht als Antwort markiert werden, bitte markieren Sie eine der folgenden (nützlicheren) Antworten als Antwort (ich würde Abdul empfehlen). Vielen Dank. – Stunner