93 votes

Listener pour le bouton Done sur EditText ?

Si j'ai un EditText et que je veux écouter si l'utilisateur appuie sur le bouton "terminé" du clavier, comment dois-je faire ?

1 votes

Un point à prendre en compte : le téléphone peut avoir un clavier physique, et l'utilisateur peut ne jamais appuyer sur le bouton "Terminer" du clavier. Avez-vous pensé à effectuer votre opération en fonction de la perte du focus ou de la fin de l'édition d'un texte ?

0 votes

2voto

Westy92 Points 842

Cette version de Kotlin devrait fonctionner sur tous les appareils :

editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        // Do something
        true
    } else {
        false
    }
}

1voto

li2 Points 990

La méthode Rx pour faire ça :

fun EditText.onImeActionDoneClicks(): Observable<Unit> {
    return Observable.create { emitter ->
        setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                emitter.onNext(Unit)
                true
            } else {
                false
            }
        }
    }
}

compositeDisposable += lastEditText.onImeActionDoneClicks().subscribe {
    toast("onImeDoneClicks")
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X