103 votes

Comment gérer le bouton Précédent dans la boîte de dialogue?

Je développe une application. En ce que lorsque le bouton est enfoncé je vais ouvrir une boîte de dialogue, avec les boutons OK et Annuler.

Ça fonctionne bien.

Mon problème est avant d'ouvrir la boîte de dialogue lorsque l'utilisateur appuie sur le bouton de retour, je le manipule comme s'il était en friche

 public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if ((keyCode == KeyEvent.KEYCODE_BACK)) 
    {

    }
 return super.onKeyDown(keyCode, event);
}
 

Cela fonctionne bien. Mais lorsque l'utilisateur ouvre la boîte de dialogue et appuie sur le bouton Précédent, la méthode ci-dessus n'est pas appelée.

Comment puis-je gérer cela?

Si quelqu'un connaît la solution, aidez-moi

Merci d'avance

252voto

Yasin Hassanien Points 1083
dialog.setOnKeyListener(new Dialog.OnKeyListener() {

            @Override
            public boolean onKey(DialogInterface arg0, int keyCode,
                    KeyEvent event) {
                // TODO Auto-generated method stub
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    finish();
                    dialog.dismiss();
                }
                return true;
            }
        });

117voto

alexc Points 335

On dirait que vous voulez définir OnCancelListener lorsque vous créez le dialogue. Cela ressemble à ceci:

 dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {         
    @Override
    public void onCancel(DialogInterface dialog) {
        //do whatever you want the back key to do
    }
});
 

20voto

Never Quit Points 1416

Vous devez remplacer la méthode OnCancel . Cette méthode fait appel à la touche Retour. Voici le code qui fonctionne parfaitement pour moi.

  AlertDialog alertDialog;

    alertDialog.setOnCancelListener(new OnCancelListener() 
    {                   
           @Override
            public void onCancel(DialogInterface dialog) 
             {
               // TODO Auto-generated method stub

                    dialog.dismiss();                           

            }
}); 
 

J'espère que cela vous aidera et acceptez-le si cela vous aide.

Merci..

9voto

NitZRobotKoder Points 277

Essaye ça

  new AlertDialog.Builder(this).setOnKeyListener(new DialogInterface.OnKeyListener() {

                        @Override
                        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {

                            if(keyCode == KeyEvent.KEYCODE_BACK){
                                Logger.d(TAG, "--------- Do Something -----------");
                                return true;
                            }
                            return false;


                        }
                    })
 

1voto

hotveryspicy Points 21181

c’est parce que lorsque votre boîte de dialogue s’ouvre, votre fenêtre se déplace ensuite vers la boîte de dialogue. Alors maintenant, vous devez gérer key sur votre dialogue.

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