Jaka jest różnica między zamknięciem lub anulowaniem okna dialogowego w systemie Android?

193

Jak mówi tytuł, jaka jest różnica między zamknięciem lub anulowaniem okna dialogowego w systemie Android?

Aal
źródło

Odpowiedzi:

187

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.

Zawietrzny
źródło
Dziękuję za odpowiedź. Usiłuję ustawić, co się stanie, jeśli użytkownik naciśnie przycisk anulowania na selektorze dat. Najpierw próbowałem użyć detektora odrzucenia i to zadziałało, ale zdarzyło się również, jeśli użytkownik wybrał czas. Potem spróbowałem anulować nasłuchiwanie i nigdy nie wyszło, nawet jeśli nacisnąłem anuluj. Czy wiesz co powinienem zrobić?
Aal
2
Jeśli używasz DatePickerDialog, powinieneś użyć OnDateSetListener, aby otrzymywać powiadomienia o zmianie daty. Jeśli ktoś kliknie przycisk Anuluj ... to nie zostanie wywołany, a okno dialogowe zniknie samo z siebie. W przypadku normalnego korzystania z DatePickerDialog nie trzeba ustawiać innych detektorów.
Lee
Do Twojej wiadomości, przycisk Wstecz uruchamia zarówno nasłuchiwanie anulowania, jak i nasłuchiwanie odrzucenia.
Urban
28

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.

hotshot309
źródło
Możesz także wywołać cancelmetodę Istnieją dwa różne sposoby nasłuchiwania i anulowania.
creativecreatorormaybenot
12

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

ucMedia
źródło