Récupérer l'événement clé sur EditText

Comment puis-je gérer l'événement en appuyant sur la touche Retour en tapant sur un EditText? Lorsque le clavier virtuel est affiché et que l'utilisateur recommence, il se cache. Je veux gérer cet événement, mais l'établissement d'un OnKeyListener dans EditText ne vous aide pas.

  • Conflit de messages de peluches concernant le remplissageInstallation d'utilisation
  • IntelliJ IDEA - Impossible de construire quoi que ce soit, toujours obtenir "le paquet R n'existe pas"
  • Apache HTTP Client Removal from API23, cela aura-t-il un effet sur Volley?
  • Impossible d'écrire sur une carte SD - canWrite renvoie faussement
  • Ordre des attributs XML dans Android Studio
  • Dynamic ListPreference dans Android
  • Quelle est la différence entre un auditeur et un récepteur (Android)?
  • Android: écoute de changements variables
  • Comment implémenter un auditeur
  • Android AudioRecord vs. MediaRecorder pour l'enregistrement audio
  • OnKeyListener ne fonctionne pas avec le clavier logiciel (Android)
  • Android: jouez le fichier mp3 à partir de la ressource brute sur le clic d'une TextView
  • 3 Solutions collect form web for “Récupérer l'événement clé sur EditText”

    Merci Reno. Cela semble fonctionner, mais j'ai réussi à le résoudre différemment.

    J'ai suralimenté l'OnKeyPreIme de EditText (int keyCode, événement KeyEvent). Cette méthode intercepte les pressions sur l'IME. = D

    public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { // do your stuff return false; } return super.dispatchKeyEvent(event); } 

    Cela ne fonctionne pas ?

     edText.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { //check if the right key was pressed if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } } return false; } }); 

    EDIT :

    D'accord, c'est déprimant. Android n'émet pas d'événements IME lors de la fermeture du clavier qwerty. C'est la seule solution de contournement . J'espère que cela fonctionne aussi pour vous.

    Je ne sais pas pourquoi c'est le cas, mais OnKeyListener fonctionne si vous supprimez simplement onKeyPreIme sur votre EditText personnalisé.

     customEditText.setOnKeyListener((v, keyCode, event) -> { if(event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: getPresenter().onBackPressed(); break; } } return false; }); 

     @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { return super.dispatchKeyEvent(event); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.