Je développe une application qui, lorsque le bouton est enfoncé, ouvre une boîte de dialogue avec les boutons OK et Annuler.
Ça fonctionne bien.
Lorsque l'utilisateur appuie sur le bouton de retour, je gère cela comme suit
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
}
return super.onKeyDown(keyCode, event);
}
Mais la méthode ci-dessus n'est pas appelée. Comment puis-je gérer cela?
Réponses:
la source
Dialog
;finish()
s'occupe déjà de cela. En outre, cette méthode devrait probablement revenirfalse
pour pouvoir capturer les événements clés ailleurs&& event.getAction() == KeyEvent.ACTION_UP
à la réponse. Sans cela, le bloc de code sera exécuté deux fois. (Touche BAS et touche HAUT). Dans cet exemple, ce n'est pas si important, mais pour d'autres actions que finish (), cela peut être très important.dialog.dismiss()
aura une fuite de mémoire.finish()
etdialog.dismiss()
devrait être inversé dans le code ci-dessus.On dirait que vous souhaitez définir OnCancelListener lorsque vous créez la boîte de dialogue. Cela ressemble à ceci:
la source
Vous devez remplacer la
OnCancel
méthode. Cette méthode appelle la touche Retour. Voici le code qui me convient parfaitement.J'espère que cela vous aidera et acceptez-le si cela vous est utile.
Merci..
la source
Essaye ça
la source
Si vous utilisez un DialogFragment, d'après ce que je peux dire, la bonne façon de le faire est de remplacer onCancel ()
J'ai remarqué que
setOnCancelListener
cela ne fonctionne pas, etsetOnKeyListener
fonctionne, mais pour moi, cela a l'effet secondaire amusant qu'il avale toutes les touches si votre boîte de dialogue a un texte d'édition.la source
c'est parce que lorsque votre boîte de dialogue s'ouvre, votre fenêtre navigue vers la boîte de dialogue. Alors maintenant, vous devez gérer
key
votre boîte de dialogue.la source
key
dans la boîte de dialogue.Remplacez la méthode
onBackPressed()
dans votre propre boîte de dialogue et utilisez-la dans votre code:Utilisation:
la source
Ce code fonctionne:
la source