Quelle est la différence entre une boîte de dialogue fermée ou annulée dans Android?


194

Comme le titre l'indique, quelle est la différence entre le rejet ou l'annulation d'une boîte de dialogue sous Android?

Réponses:


188

En règle générale, une boîte de dialogue est fermée lorsque son travail est terminé et qu'elle est supprimée de l'écran. Une boîte de dialogue est annulée lorsque l'utilisateur souhaite quitter la boîte de dialogue et appuie sur le bouton Retour.

Par exemple, vous avez une boîte de dialogue standard Oui / Non à l'écran. Si l'utilisateur clique sur Non, la boîte de dialogue est fermée et la valeur de Non est renvoyée à l'appelant. Si au lieu de choisir Oui ou Non, l'utilisateur clique sur Retour pour sortir de la boîte de dialogue plutôt que de faire un choix, la boîte de dialogue est annulée et aucune valeur n'est renvoyée à l'appelant.


Merci pour la réponse. J'essaie de définir ce qui se passe si l'utilisateur appuie sur le bouton d'annulation d'un sélecteur de date. J'ai d'abord essayé d'utiliser un auditeur de rejet, et cela a fonctionné, mais cela s'est également produit si l'utilisateur choisissait une heure. Ensuite, j'ai essayé un auditeur d'annulation, et il ne s'est jamais déclenché, même si j'ai appuyé sur Cancel. Tu sais ce que je dois faire?
Aal

2
Si vous utilisez un DatePickerDialog, vous devez utiliser un OnDateSetListener pour être averti lorsque la date change. Si quelqu'un clique sur le bouton d'annulation ... il ne sera pas appelé et la boîte de dialogue disparaîtra d'elle-même. Pour les utilisations normales de DatePickerDialog, vous n'avez pas besoin de définir d'autres écouteurs.
Lee

Pour info, le bouton de retour déclenche à la fois l'écouteur d'annulation et l'écouteur de rejet.
Urbain

28

dismissest quelque chose que vous devez appeler explicitement dans votre code, généralement pour répondre à un événement de clic sur un bouton de votre Dialog. Si vous préférez, vous pouvez appeler dismissDialogle Activity, qui à son tour appellera dismissle Dialog.

La cancelméthode ne s'exécute que lorsqu'elle est explicitement appelée dans votre code, ou lorsque l'utilisateur appuie sur le bouton RETOUR lorsque votre annulable Dialogest ouvert (comme @Lee l'a noté).

Si vous utilisez a DatePicker, tout cela est toujours le cas. Comme @Lee l'a dit, DatePickerDialog.OnDateSetListenerdétecte simplement quand l'utilisateur a choisi une date dans le DatePicker.

L' Android Developer Reference fournit plus d'informations sur Dialogs.


Vous pouvez également appeler la cancelméthode. Il y a deux écouteurs différents pour la suppression et l'annulation.
creativecreatorormaybenot

12

DismissL'appel du rejet supprime la boîte de dialogue de l'écran. Cette méthode peut être appelée en toute sécurité depuis n'importe quel thread. Notez que vous ne devez pas remplacer cette méthode pour effectuer le nettoyage lorsque la boîte de dialogue est fermée , mais implémentez-la dans onStop .

CancelL'appel de l'annulation annule la boîte de dialogue. C'est essentiellement la même chose que l'appel de la fonction de renvoi () , mais cela appellera également votre DialogInterface.OnCancelListener , s'il est enregistré.

Hide Cette méthode masque la boîte de dialogue, mais ne la ferme pas.

Et pour en savoir plus, voir ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.