Vorteile von DialogFragment gegenüber AlertDialog [duplicate]

Lesezeit: 3 Minuten

Benutzer-Avatar
Raphael Petegrosso

Bei der Entwicklung einer Android-App habe ich gelesen, dass die Verwendung empfohlen wird DialogFragment anstatt direkt an zu verwenden AlertDialog um Warnungen und Bestätigungen anzuzeigen.

Dies geschieht beispielsweise in der Dokumentation von DialogFragment: http://developer.android.com/reference/android/app/DialogFragment.html

Die Leute sagen auch, dass sie das hier bevorzugen: Android DialogFragment vs Dialog

Ich würde gerne die Vorteile dieses Ansatzes kennen, da der Code komplexer wird.

Vielen Dank

  • Ich denke nicht, dass es langwierig ist, es sei denn, eine bestimmte Anforderung, dass Sie kein Dialogfragment verwenden sollten, Sie haben eine Ansicht in einem Alarmdialog erstellt und können das Layout gemäß Ihren Anforderungen anpassen, ohne dass Sie showDialog(), onPrepareDialog() und onCreateDialog aufrufen müssen .

    – Abhijit-Chakra

    15. Juli 2013 um 6:06 Uhr

  • Robuster Code ist wichtiger als kürzerer Code

    – Tobrun

    17. Juli 2013 um 9:52 Uhr


Das ist einfach.
DialogFragment ist ein Fragment. Was kann Ihnen also ein Fragment bieten, während andere Objekte dies nicht können?
Es sind die Lifecycle-Callbacks.
Mit DialogFragment kann es also sehr leistungsfähig sein und Ihren Code viel sauberer machen.
Haben Sie jemals Fensterlecks gesehen, wenn Sie einen Dialog nicht geschlossen haben, als seine Aktivität zerstört wurde? Um das zu verhindern, haben Sie jemals versucht, den Dialog zu schließen, wenn onPause() aufgerufen wurde? Mussten Sie dazu jemals einen Verweis auf dieses Dialogfeld auf ein Objekt auf Klassenebene erstellen?
Mit DialogFragment wird alles gehandhabt.
Und Sie erhalten alle Lifecycle-Callbacks.
Dann können Sie dem Dialog mehr Intelligenz verleihen und ihn dazu bringen, selbst intelligente Arbeit zu leisten, anstatt ihm von Activity zu sagen, was zu tun ist.

Benutzer-Avatar
Tobrun

Verwenden Sie DialogFragment über Dialog:


  • Seit der Einführung von API-Level 13:

    das showDialog Methode von Activity ist veraltet. Das Aufrufen eines Dialogs an anderer Stelle im Code ist nicht ratsam, da Sie den Dialog selbst verwalten müssen (z. B. Orientierungsänderung). Die Nichtverwendung von showDialog führt gelegentlich zu Ausnahmen, der Dialog ist mit keiner Aktivität verknüpft.

    Hinweis zu showDialog:

    Referenz von Dialog: Aktivitäten bieten eine Möglichkeit, das Erstellen, Speichern und Wiederherstellen von Dialogen zu verwalten. Siehe onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int) und unlockDialog(int). Wenn diese Methoden verwendet werden, gibt getOwnerActivity() die Aktivität zurück, die diesen Dialog verwaltet hat.

  • Unterschied zwischen DialogFragment und AlertDialog

    Eine Sache fällt mir ein, wenn ich deine Frage lese. Sind sie so verschieden? EIN DialogFragment ist einem Dialog ziemlich ähnlich, es ist nur in ein Fragment gewickelt. Aus der Android-Referenz zu DialogFragment:

    Ein DialogFragment ist ein Fragment, das ein Dialogfenster anzeigt, das über dem Fenster seiner Aktivität schwebt. Dieses Fragment enthält ein Dialog-Objekt, das je nach Zustand des Fragments entsprechend angezeigt wird. Die Steuerung des Dialogfelds (Entscheidung, wann es angezeigt, ausgeblendet oder geschlossen werden soll) sollte über die API erfolgen hiernicht bei direkten Aufrufen des Dialogs.

  • Weitere Hinweise

    • Fragmente sind aufgrund der Vielfalt von Geräten mit unterschiedlichen Bildschirmgrößen eine natürliche Entwicklung im Android-Framework.
    • DialogFragments und Fragments werden in der Support-Bibliothek bereitgestellt, wodurch die Klasse in allen derzeit verwendeten Versionen von Android verwendbar ist.

  • Aber ohne showDialog können wir auch einen Dialog anzeigen, indem wir eine Ansicht in einem alertDialog setzen, und ich denke, das ist sehr einfach und wir brauchen weniger Codes und es ist klar.

    – Abhijit-Chakra

    15. Juli 2013 um 6:04 Uhr

  • Wie wird dies deutlich, wenn sich die Orientierung ändert?

    – Tobrun

    16. Juli 2013 um 7:08 Uhr

  • Ok, es ist Ihre Aufgabe, aber beachten Sie, dass die Verwendung eines Dialogs ohne showDialog zu gelegentlichen Ausnahmeberichten in der Entwicklerkonsole führt. (nicht von einer Aktivität verwaltet)

    – Tobrun

    17. Juli 2013 um 9:46 Uhr

  • Eine IllegalStateException-Ansicht, die nicht an ein Fenster angefügt ist, ist eine typische Ausnahme, die von einem Dialogfeld ausgelöst wird.

    – Tobrun

    17. Juli 2013 um 11:08 Uhr

  • IMO, der Hauptteil der Antwort “es gibt keinen Unterschied / sie sind ziemlich ähnlich” beantwortet den Titel der Frage “Vorteile gegenüber” nicht wirklich.

    – kizzx2

    23. März 2014 um 4:36 Uhr

1246310cookie-checkVorteile von DialogFragment gegenüber AlertDialog [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy