2013-02-10 10 views
11

Ich habe mehrere stackoverflow.com Antworten gelesen, aber immer noch nicht den Vorteil der Verwendung eines DialogFragment über einen einfachen AlertDialog. Ich habe offenbar zwei Strategien:Vorteil der Verwendung eines DialogFragments gegenüber dem einfachen AlertDialog?

a) verwenden, um einen AlertDialog.Builder einen Alertdialog, .Create() zu konfigurieren, und dann .show() es in meiner Tätigkeit (in einigen Tastenhandler) oder

b) Unterklasse DialogFragment, schreibt die gleiche Alertdialog-Bauordnung in onCreateDialog() (außer ich die .Create nur zurückkehren(), und dann, in meiner Tätigkeit, einen DialogFragment instanziiert, und es zeigt.

Der Ausgang sieht genauso aus

Wie auch immer, ich bin nicht mit veralteten Code - ich verwende. show() mit dem AlertDialog oder dem DialogFragment. Ist der Vorteil, wenn ich zu einem anderen Gerät gehe? Oder was ist der Punkt ...

Dank für irgendwelche Einsichten,

Michael

Antwort

23

DialogFragment behandelt eine Reihe von Lifecycle-Management-Fälle einschließlich Sie Konfigurationsänderungen (zB Bildschirm-Rotation) und Zustand Wiederherstellung, wenn App-Prozess wird im Hintergrund beendet und der Benutzer kehrt später zu ihm zurück. Wenn Sie DialogFragment nicht verwenden, müssen Sie Fälle auf andere Weise behandeln.

+1

Danke! Ich wünschte, Google hätte etwas ähnliches in ihrer Dokumentation gesagt. –

+3

Das kann arrangiert werden. ;) – adamp

0

Zusätzlich zu dem, was @adamp sagte, da DialogFragment seine eigenen Lebenszyklus-Callbacks erhält, würde es für seinen Lebenszyklus verantwortlich sein, so dass Ihre Aktivität nicht dafür verantwortlich ist, ihm zu sagen, was zu tun ist.

Zum Beispiel, wenn die Aktivität beendet wird, sollte Ihre Aktivität die Dialoge an dimiss() melden, ansonsten sehen Sie, dass es in Logcat leaked the window Fehler hat.

Verwandte Themen