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?

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.


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.