Ich habe ein Problem mit dem Verhalten des neuesten Jelly Bean-Emulators. Ich habe mehrere EditTexts
in meiner App. Ein OnEditorActionListener
bietet spezielle Behandlung, wenn ein Benutzer die EINGABETASTE auf der Tastatur drückt. Dies funktioniert bis ICS, aber jetzt auf Jelly Bean wird die Listener Callback-Methode onEditorAction()
nicht mehr aufgerufen. In die EditText
wird nur eine neue Zeile eingefügt.onEditorAction() wird nicht aufgerufen, nachdem die Eingabetaste auf Jelly Bean-Emulator gedrückt wurde
EditText testEditText = new EditText(context);
testEditText.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.d(TAG, "onEditorAction() called");
return false;
}
});
addView(testEditText);
Ist das ein Fehler in Jelly Bean:
Dieses auf diese Weise reproduziert werden? Oder im Emulator? Oder wurde das Verhalten absichtlich geändert?
Merkwürdiger jemand schreibt anderes, dass die Methode aufgerufen wird, aber mit unerwarteten Parametern auf einem Nexus 7 läuft Jelly Bean hier: null keyevent and actionid = 0 in onEditorAction() (Jelly Bean/Nexus 7)
Dieses Beispielprojekt verhält sich wie erwartet: https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare
@CommonsWare: Vielen Dank, ich eine Abhilfe gefunden für meine Problem in Ihrem Code. Wenn ich Folgendes tue, wird die EINGABETASTE mit einer GO-Taste auf der virtuellen Tastatur ausgetauscht, die onEditorAction() auslöst: editText.setRawInputType (InputType.TYPE_CLASS_TEXT); editText.setImeOptions (EditorInfo.IME_ACTION_GO); – Hendrik
Oder in XML: android: imeOptions = "actionGo" \t \t android: inputType = "text" – Hendrik