Was ist der Unterschied zwischen einem Dialog, der in Android geschlossen oder abgebrochen wird?

193

Wie der Titel schon sagt, was ist der Unterschied zwischen einem Dialog, der in Android geschlossen oder abgebrochen wird?

Aal
quelle

Antworten:

187

In der Regel wird ein Dialogfeld geschlossen, wenn sein Auftrag abgeschlossen ist und vom Bildschirm entfernt wird. Ein Dialog wird abgebrochen, wenn der Benutzer den Dialog verlassen möchte und die Schaltfläche Zurück drückt.

Beispielsweise haben Sie ein Standard-Ja / Nein-Dialogfeld auf dem Bildschirm. Wenn der Benutzer auf Nein klickt, wird das Dialogfeld geschlossen und der Wert für Nein an den Anrufer zurückgegeben. Wenn der Benutzer anstelle von Ja oder Nein auf Zurück klickt, um den Dialog zu verlassen, anstatt eine Auswahl zu treffen, wird der Dialog abgebrochen und es wird kein Wert an den Anrufer zurückgegeben.

Lee
quelle
Danke für die Antwort. Ich versuche festzulegen, was passiert, wenn der Benutzer die Abbruchtaste auf einem Datepicker drückt. Zuerst habe ich versucht, einen Entlassungs-Listener zu verwenden, und das hat funktioniert, ist aber auch passiert, wenn der Benutzer eine Zeit gewählt hat. Dann habe ich versucht, einen Abbruch-Listener zu verwenden, und er ging nie aus, selbst wenn ich auf Abbrechen drückte. Weißt du was ich tun soll?
Aal
2
Wenn Sie einen DatePickerDialog verwenden, sollten Sie einen OnDateSetListener verwenden, um benachrichtigt zu werden, wenn sich das Datum ändert. Wenn jemand auf die Schaltfläche Abbrechen klickt, wird er nicht aufgerufen und der Dialog wird von selbst ausgeblendet. Für die normale Verwendung des DatePickerDialog müssen Sie keine anderen Listener festlegen.
Lee
Zu Ihrer Information, die Zurück-Taste löst sowohl den Abbruch-Listener als auch den Entlassungs-Listener aus.
Urban
28

dismissist etwas, das Sie explizit in Ihrem Code aufrufen müssen, um normalerweise auf ein Klickereignis auf einer Schaltfläche in Ihrem Code zu reagieren Dialog. Wenn Sie möchten, können Sie rufen dismissDialogin die Activity, die in Call drehen wird dismissauf die Dialog.

Die cancelMethode wird nur ausgeführt, wenn sie in Ihrem Code explizit aufgerufen wird oder wenn der Benutzer die BACK-Taste drückt, wenn Ihr Abbruch Dialoggeöffnet ist (wie @Lee vermerkt).

Wenn Sie a verwenden DatePicker, ist dies alles immer noch der Fall. Wie @Lee sagte, DatePickerDialog.OnDateSetListenererkennt nur, wann der Benutzer ein Datum aus dem ausgewählt hat DatePicker.

Die Android-Entwicklerreferenz enthält weitere Informationen zu Dialogs.

hotshot309
quelle
Sie können die cancelMethode auch aufrufen . Es gibt zwei verschiedene Listener zum Dimmen und Abbrechen.
CreativeCreatorormaybenot
12

DismissDurch Aufrufen der Entlassung wird der Dialog vom Bildschirm entfernt. Diese Methode kann sicher von jedem Thread aus aufgerufen werden. Beachten Sie, dass Sie diese Methode nicht überschreiben sollten, um eine Bereinigung durchzuführen, wenn der Dialog geschlossen wird, sondern diese in onStop implementieren .

CancelDurch Aufrufen des Abbruchs wird der Dialog abgebrochen. Dies ist im Wesentlichen dasselbe wie das Aufrufen von entlassen () , ruft jedoch auch Ihren DialogInterface.OnCancelListener auf , falls registriert.

Hide Diese Methode verbirgt den Dialog, schließt ihn jedoch nicht.

Und für mehr sehen Sie hier

ucMedia
quelle