Jak mówi tytuł, jaka jest różnica między zamknięciem lub anulowaniem okna dialogowego w systemie Android?
193
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.
dismiss
to coś, co musisz jawnie wywołać w kodzie, zwykle w celu zareagowania na zdarzenie kliknięcia przycisku w twoimDialog
. Jeśli wolisz, możesz zadzwonićdismissDialog
naActivity
, który z kolei zadzwonidismiss
naDialog
.cancel
Metoda wykonywana tylko, gdy jest wyraźnie nazywany w kodzie, lub gdy użytkownik naciśnie przycisk BACK, gdy cancelableDialog
jest otwarty (jak wspomniano @Lee).Jeśli używasz a
DatePicker
, to nadal tak jest. Jak powiedział @Lee,DatePickerDialog.OnDateSetListener
wykrywa tylko, kiedy użytkownik wybrał datę zDatePicker
.Dokumentacja dla programistów Androida zawiera więcej informacji na temat
Dialog
s.źródło
cancel
metodę Istnieją dwa różne sposoby nasłuchiwania i anulowania.Dismiss
Wywoł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 .Cancel
Wywoł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
źródło