24 Stimmen

onKeyListener funktioniert nicht auf der virtuellen Tastatur

Ich verstehe nicht, warum dieser Teil des Codes nicht funktioniert. Nur die Rücktaste und die Eingabetaste werden erkannt. Für alle anderen Tasten wird kein Listener ausgelöst. Mein Gerät ist Nexus One.

Ich habe versucht, die OnKeyDown-Methode der Aktivität außer Kraft zu setzen, und das ist noch schlimmer. Die einzige erkannte Taste war die Zurück-Taste der Hardware.

Ich sehe rund um einen Vorschlag zu TextWatcher und onTextChanged verwenden, während das in einigen Fällen funktionieren könnte, ist es nicht eine echte Arbeit herum. Zum Beispiel, wenn Textbox leer ist, werden Sie nicht erkennen, wenn Benutzer BackSpace(Delete) Taste drücken. Also irgendwelche Ideen?

        TextView txtInput = (TextView)findViewById(R.id.txtInput);
    txtInput.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            makeToast(keyCode + " key pressed");
            return true;
        }
    });

-1voto

user199395 Punkte 99

Wir hatten das TextWatcher-Problem auch auf dem iPhone - wenn der Puffer leer ist, sendet die Tastatur kein Del-Event. Wir haben es umgangen, indem wir den Tastaturpuffer mit 1000 Zeichen vorgeladen haben. Glücklicherweise hat unsere Anwendung das Eingabefeld hinter der Tastatur versteckt, so dass die 1000 Zeichen nicht zu sehen sind. Es ist hässlich, aber es funktioniert (es sei denn, der Benutzer drückt 1000 Mal hintereinander auf "Löschen", bevor er Daten eingegeben hat!)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X