Alors que la plupart des gens ont répondu directement à la question, je voulais en dire plus sur le concept sous-jacent. Tout d'abord, j'ai été attiré l'attention de l'IME lorsque j'ai créé une activité de connexion par défaut. Il a généré du code pour moi qui comprenait ce qui suit:
<EditText
  android:id="@+id/password"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="@string/prompt_password"
  android:imeActionId="@+id/login"
  android:imeActionLabel="@string/action_sign_in_short"
  android:imeOptions="actionUnspecified"
  android:inputType="textPassword"
  android:maxLines="1"
  android:singleLine="true"/>
Vous devez déjà être familiarisé avec l'attribut inputType. Cela informe simplement Android du type de texte attendu, comme une adresse e-mail, un mot de passe ou un numéro de téléphone. La liste complète des valeurs possibles est disponible ici .
C'était, cependant, l'attribut imeOptions="actionUnspecified"dont je ne comprenais pas le but. Android vous permet d'interagir avec le clavier qui apparaît du bas de l'écran lorsque le texte est sélectionné à l'aide de InputMethodManager. Dans le coin inférieur du clavier, il y a un bouton, généralement il dit "Suivant" ou "Terminé", selon le champ de texte actuel. Android vous permet de personnaliser cela en utilisant android:imeOptions. Vous pouvez spécifier un bouton "Envoyer" ou "Suivant". La liste complète peut être trouvée ici .
Avec cela, vous pouvez ensuite écouter les pressions sur le bouton d'action en définissant un TextView.OnEditorActionListenerpour l' EditTextélément. Comme dans votre exemple:
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
    if (actionId == EditorInfo.IME_ACTION_DONE) {
       //do here your stuff f
       return true;
    }
    return false;
    } 
});
Maintenant, dans mon exemple, j'avais l' android:imeOptions="actionUnspecified"attribut. Ceci est utile lorsque vous souhaitez essayer de vous connecter à un utilisateur lorsqu'il appuie sur la touche Entrée. Dans votre activité, vous pouvez détecter cette balise, puis tenter de vous connecter:
    mPasswordView = (EditText) findViewById(R.id.password);
    mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
            if (id == R.id.login || id == EditorInfo.IME_NULL) {
                attemptLogin();
                return true;
            }
            return false;
        }
    });