2012-07-03 7 views
20

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)

+1

Dieses Beispielprojekt verhält sich wie erwartet: https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare

+0

@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

+1

Oder in XML: android: imeOptions = "actionGo" \t \t android: inputType = "text" – Hendrik

Antwort

32

Wenn jemand anderes diese Frage findet:

ich diese mehr getestet habe und auf dem Jelly-Bean-Emulator wird die Listener-Callback-Methode onEditorAction() tatsächlich nicht mehr aufgerufen, wenn die Eingabetaste auf der virtuellen Tastatur gedrückt wird.

Wie bereits erwähnt, besteht eine mögliche Lösung oder Problemumgehung darin, die Eingabetaste durch einen der verfügbaren Aktionstasten zu ersetzen. Diese lösen weiterhin onEditorAction() aus. Ich musste auch den Eingabetyp angeben.

editText.setRawInputType(InputType.TYPE_CLASS_TEXT); 
editText.setImeOptions(EditorInfo.IME_ACTION_GO);
<EditText 
... 
android:imeOptions="actionGo" 
android:inputType="text" /> 
+2

und was ist, wenn das Telefon imeActions überhaupt nicht unterstützt? (Es gibt viele Geräte, die nicht.) – Darpan

Verwandte Themen