Ho un problema con il comportamento dell'ultimo emulatore Jelly Bean. Ho diversi EditTexts
nella mia app. Un OnEditorActionListener
fornisce una gestione speciale quando un utente preme il tasto INVIO sulla tastiera. Questo ha funzionato fino a ICS, ma ora su Jelly Bean il metodo di callback dell'ascoltatore onEditorAction()
non viene più chiamato. Solo una nuova riga viene inserita in EditText
.onEditorAction() non viene chiamato dopo aver premuto il tasto Invio sull'emulatore Jelly Bean
Questo può essere riprodotto in questo modo:
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);
Si tratta di un bug in Jelly Bean? O nell'emulatore? O il comportamento è stato cambiato intenzionalmente?
Curiosamente qualcun altro scrive che il metodo viene chiamato, ma con parametri inaspettati, su un Nexus 7 in esecuzione Jelly Bean qui: null keyevent and actionid = 0 in onEditorAction() (Jelly Bean/Nexus 7)
Questo progetto di esempio si comporta come ci si aspettava: https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare
@CommonsWare: Grazie, ho trovato una soluzione per il mio problema nel tuo codice. Se faccio quanto segue, il tasto ENTER viene scambiato con un tasto GO sulla tastiera virtuale, che attiva onEditorAction(): editText.setRawInputType (InputType.TYPE_CLASS_TEXT); editText.setImeOptions (EditorInfo.IME_ACTION_GO); – Hendrik
Oppure in XML: android: imeOptions = "actionGo" \t \t android: inputType = "text" – Hendrik