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.

  • Android RecyclerView qui se trouve dans un fragment qui se trouve dans un ViewPager ne recharge pas / actualise les vues si setOffscreenPageLimit est atteint
  • Comment ajouter onclicklistener à la vue de texte générée dynamiquement?
  • Comment utiliser ColorDrawable avec ImageView?
  • Utilisation des API Android de reconnaissance vocale de Google Glass
  • Comment revenir sur le marché lorsque le schéma d'URL personnalisé d'Android n'est pas géré?
  • Exception: tentez d'obtenir une référence sur un SQLiteClosable proche
  • Auditeur d'événements personnalisé Android
  • Quelle est la différence entre un auditeur et un récepteur (Android)?
  • Android, Checkbox listenener en XML?
  • 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
  • Set onClickListener pour l'élément spinner?
  • 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.