web-dev-qa-db-fra.com

Comment savoir si un dialogue est rejeté dans Android?

Si la boîte de dialogue est fermée, je veux faire quelque chose pour mon arrière-plan.Alors je veux savoir si la boîte de dialogue est fermée

21
Marshal Chen

Vous pouvez utiliser une onDismissListener

http://developer.Android.com/reference/Android/content/DialogInterface.OnDismissListener.html

public Dialog createDialog() {
    Dialog d = new Dialog(this);
    d.setOnDismissListener(new OnDismissListener() {
        @Override
        public void onDismiss(final DialogInterface arg0) {
            // do something
        }
    });
    return d;
}

Si vous utilisez une DialogFragment, remplacez simplement onDismiss()

http://developer.Android.com/reference/Android/app/DialogFragment.html#onDismiss(Android.content.DialogInterface)

52
Ken Wolf

@ Ken Wolf a une excellente réponse à cette question. 

Je voulais juste ajouter que onDismissListener n'a été introduit que dans API 17. Si vous essayez de supporter quelque chose de plus bas, vous pouvez utiliser onCancelListener, qui n'est pas aussi bon mais couvre des cas comme backButton et un tapotement en dehors de AlertDialog.

http://developer.Android.com/reference/Android/content/DialogInterface.OnCancelListener.html#onCancel(Android.content.DialogInterface)

public Dialog createDialog() {
    Dialog d = new Dialog(this);
    d.setOnCancelListener(new DialogInterface.OnCancelListener() {
        @Override
        public void onCancel(DialogInterface dialog) {
            // do something
        }
    });
}
2
xemacobra

J'ai remarqué que la onDismissListener est appelée même lorsque vous sélectionnez l'une des options de l'alerte (bouton Oui/Non/Neutre). Pour moi, onCancelListener était la meilleure option car j'avais besoin de quelque chose qui traçait une fermeture explicite de la boîte de dialogue en cliquant en dehors de la zone d'alerte.

0
user1689757