Je suis confronté exactement au même problème. Je peux confirmer l'affirmation de Kre8 selon laquelle ce comportement ne se produit que s'il y a un type d'entrée spécifique (dans mon cas, textNoSuggestion/singleLine). Je vais expliquer plus tard pourquoi c'est probablement le cas. J'ai décidé d'analyser ce qui se passe à l'intérieur de la vue. Après tout, je peux dire que ce n'est pas un bug juste une constellation malheureuse peut-être :). L'EditText pour lequel vous avez demandé le focus, le reçoit correctement.
Votre premier problème peut-être non reconnu est que l'éditeur EditorActionListener est appelé deux fois. Une fois pour la clé et une fois pour la baisse. Je ne connais pas l'effet de votre vérification de l'actionId, de sorte que peut-être conserve votre code d'être exécuté deux fois.
J'ai donc appelé à tort dans ma demande de solution se concentrer sur l'événement de clé ACTION_DOWN. L'EditText a reçu le focus correctement, MAIS sur l'événement ACTION_UP à venir, qui est en quelque sorte interprété par l'EditText récemment mis au point, le focus a été renvoyé immédiatement au focus EditText précédemment envoyé car il est dans la recherche de focus la prochaine réception.
Donc je suppose que maintenant le type d'entrée a un effet parce que, si l'EditText est dans un mode multiligne, la touche d'entrée n'enverra plus le focus.
Ma solution de travail finale ressemble à ce que:
passwordEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER && v == passwordEditText) {
if (event.getAction() == KeyEvent.ACTION_UP) {
if (userEditText.length() > 0 && passwordEditText.length() > 0) {
login();
}
if (userEditText.length() == 0) {
userEditText.requestFocus();
}
}
return true;
}
return false;
}
});
Espérons que cela fonctionne aussi bien pour vous :)
Edit: J'ai oublié de signaler, que le type d'entrée du EditText peut être CHOISI comme vous le souhaitez, car la méthode onEditorAction gère les deux, haut et bas.
Merci, mec, j'ai eu le même problème sur Android 4.1. Après avoir supprimé 'inputType' tout a bien fonctionné. –