Im offiziellen Beispiel http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog wird das Fragment mit der Verwendung der statischen Factory-Methode erstellt, die Argumente in einem Bundle umschließt und No-Args-Konstruktor Argumente mit SetArguments (Bundle) übergeben - also meine Frage ist - warum nicht einfach öffentlichen Konstruktor mit machen diese Argumente? Was ist der Grund für die Verwendung der Methoden des getArguments/setArguments-Fragments? Ist es nicht garantiert, dass Dialog jedes Mal neu erstellt wird, aber wiederverwendet wird? Wenn ja, wenn es passiert? Vielen Dank im Voraus.DailogFragment - getArguments/setArguments - Warum Argumente in einem Bündel übergeben?
5
A
Antwort
7
Durch das Erzwingen eines Nicht-Arguments ermöglicht das Standardkonstruktormuster dem System, das Fragment bei Bedarf dynamisch neu zu erstellen. Aus der Dokumentation:
Alle Unterklassen von Fragment müssen einen öffentlichen leeren Konstruktor enthalten. Das Framework instanziiert häufig eine Fragmentklasse bei Bedarf erneut, insbesondere während der Statuswiederherstellung, und muss in der Lage sein, diesen Konstruktor zu finden, um es zu instanziieren. Wenn der leere Konstruktor nicht verfügbar ist, tritt in einigen Fällen während der Statuswiederherstellung eine Laufzeitausnahme auf.
"wird oft" und "in einigen Fällen" lässt es vage. Aber kurz vor der Befriedigung Ihrer Neugierde ... Argumente ist es!
Verwandte Themen
- 1. Doppelte ArrayList in einem Bündel übergeben
- 2. Argumente in HandlerFunc übergeben
- 3. Funktion übergeben Argumente in umgekehrter
- 4. Android - Anzahl der zusätzlichen Argumente im Bündel für Aktivität/Fragment
- 5. Python erhalten Argumente übergeben
- 6. Symfony Anruf ein Bündel in einem anderen Bündel
- 7. Backbone js Argumente übergeben
- 8. create thread - Argumente übergeben
- 9. Android, Intents: Ein Bündel an SecondActivity übergeben
- 10. Warum kann ich keine konstanten Arrays als Argumente übergeben?
- 11. Warum Gebrauch @ Scripts.Render ("~/Bündel/jquery")
- 12. Argumente an angularjs Filter übergeben
- 13. Fragment newInstance warum Argumente verwenden?
- 14. Scrapy: Argumente an cmdline.execute() übergeben
- 15. Warum sollten wir Argumente übergeben, um zu browserifizieren?
- 16. Drupal Argumente in einem Menü
- 17. Batch-Skript-Subroutine: Argumente übergeben
- 18. zend_form ViewScript Decorator/Argumente übergeben
- 19. Mehrere Argumente an dbGetQuery() übergeben?
- 20. JVM-Argumente an JMH übergeben
- 21. Zwei Argumente mit navigator.notification.confirm übergeben?
- 22. Einschließlich distutils in einem py2app Bündel
- 23. "Argumente an Subroutine übergeben" -Frage?
- 24. So übergeben Sie optionale Argumente
- 25. in Array aufgeteilt und als Argumente übergeben
- 26. Können Argumente in Ereignisbindungen übergeben werden?
- 27. Mehrere Codeblöcke als Argumente in Ruby übergeben
- 28. Übergeben Liste als Argumente in Scrapy
- 29. Übergeben von Funktionen als Argumente in Matlab
- 30. Argumente in eine Inline-Funktion übergeben
Ein leerer öffentlicher Konstruktor könnte mit einem parametrisierten öffentlichen Konstruktor koexistieren. Dies erklärt nicht die Verwendung einer statischen Methode (anstelle eines Konstruktors) oder das Umbrechen von Argumenten in einem "Bündel" -Objekt. –
@KonradMorawski Sie haben Recht, das klingt vernünftig. Das Tool ADT lint hebt jedoch einen solchen Konstruktor als fehlerhaft hervor. –