Odpowiedzi:
Zazwyczaj okno dialogowe jest zamykane po zakończeniu zadania i usuwaniu go z ekranu. Okno dialogowe jest anulowane, gdy użytkownik chce wyjść z okna dialogowego i naciska przycisk Wstecz.
Na przykład masz standardowe okno dialogowe Tak / Nie na ekranie. Jeśli użytkownik kliknie przycisk Nie, okno dialogowe zostanie odrzucone, a wartość Nie zostanie zwrócona do osoby dzwoniącej. Jeśli zamiast wybierać opcję Tak lub Nie, użytkownik kliknie przycisk Wstecz, aby wyjść z okna dialogowego, zamiast dokonać wyboru, okno dialogowe zostanie anulowane i żadna wartość nie zostanie zwrócona do osoby dzwoniącej.
dismissto coś, co musisz jawnie wywołać w kodzie, zwykle w celu zareagowania na zdarzenie kliknięcia przycisku w twoim Dialog. Jeśli wolisz, możesz zadzwonić dismissDialogna Activity, który z kolei zadzwoni dismissna Dialog.
cancelMetoda wykonywana tylko, gdy jest wyraźnie nazywany w kodzie, lub gdy użytkownik naciśnie przycisk BACK, gdy cancelable Dialogjest otwarty (jak wspomniano @Lee).
Jeśli używasz a DatePicker, to nadal tak jest. Jak powiedział @Lee, DatePickerDialog.OnDateSetListenerwykrywa tylko, kiedy użytkownik wybrał datę z DatePicker.
Dokumentacja dla programistów Androida zawiera więcej informacji na temat Dialogs.
cancelmetodę Istnieją dwa różne sposoby nasłuchiwania i anulowania.
DismissWywołanie odwołania powoduje usunięcie okna dialogowego z ekranu. Tę metodę można bezpiecznie wywołać z dowolnego wątku. Zauważ, że nie powinieneś zastępować tej metody czyszczenia, gdy okno dialogowe zostanie zamknięte, zamiast tego zaimplementuj to w OnStop .
CancelWywołanie anulowania powoduje anulowanie okna dialogowego. Jest to w zasadzie to samo, co wywołanie metodyISSISS () , ale wywoła również DialogInterface.OnCancelListener , jeśli zostanie zarejestrowany.
Hide Ta metoda ukrywa okno dialogowe, ale go nie odrzucaj.
Więcej informacji tutaj