Tengo un problema con el comportamiento del último emulador Jelly Bean. Tengo varios EditTexts
en mi aplicación. Un OnEditorActionListener
proporciona un manejo especial cuando un usuario presiona la tecla ENTRAR en el teclado. Esto funcionó hasta ICS, pero ahora en Jelly Bean ya no se llama al método de devolución de llamada del oyente onEditorAction()
. Solo se inserta una nueva línea en el EditText
.onEditorAction() no se invoca después de presionar la tecla Enter en el emulador Jelly Bean
Esto puede ser reproducida de esta manera:
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);
Es esto un error en Jelly Bean? ¿O en el emulador? ¿O el comportamiento ha sido cambiado intencionalmente?
Curiosamente otra persona escribe que el método se llama, pero con parámetros inesperados, en un Nexus 7 corriendo Jelly Bean aquí: null keyevent and actionid = 0 in onEditorAction() (Jelly Bean/Nexus 7)
Este proyecto de ejemplo se comporta como se esperaba: https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare
@CommonsWare: Gracias, he encontrado una solución para mi problema dentro de tu código Si hago lo siguiente, la tecla ENTER se intercambia con una tecla GO en el teclado virtual, que activa onEditorAction(): editText.setRawInputType (InputType.TYPE_CLASS_TEXT); editText.setImeOptions (EditorInfo.IME_ACTION_GO); – Hendrik
O en XML: android: imeOptions = "actionGo" \t \t android: inputType = "text" – Hendrik