Android Fragment onCreateView vs. onActivityCreated


73

Ich weiß, dass die Ansichtshierarchie eines Fragments in onCreateView aufgeblasen werden muss, aber welche anderen Funktionen können in onCreateView enthalten sein, und was sollte auf onActivityCreated warten? Meine aktuelle Implementierung verwendet für alles separate Aktivitäten, und eine typische Aktivität erledigt den größten Teil ihrer Arbeit in ihrer onCreate-Methode, einschließlich Aufblasen der Ansicht, Festlegen der Inhaltsansicht, Initialisieren der verschiedenen Widgets mit Daten, Einrichten von Listenern usw.

Kann dies wahrscheinlich alles in onCreateView verschoben werden, oder sollten stattdessen einige Funktionen in eine onActivityCreated-Methode eingefügt werden?

Antworten:


77

Wenn Ihre Ansicht statisch ist, ist es nicht erforderlich, Code in die onActivityCreated-Methode zu verschieben. Wenn Sie beispielsweise einige Listen aus dem Adapter ausfüllen, sollten Sie dies in der onActivityCreated-Methode tun und den Ansichtsstatus wiederherstellen, wenn setRetainInstance dies verwendet hat.

Der Zugriff auf die Ansichtshierarchie der übergeordneten Aktivität muss nicht früher in onActivityCreated erfolgen.


Warum ist es bei "statisch" nicht erforderlich? Es scheint, dass jeder das hat, aber ich habe es nicht getan.
Diffy

6
Glaube nicht, dass alle es verstanden haben, Diffy, aber sie waren einfach zufrieden mit der Antwort :)
Boy

7
@Diffy meinte er mit statischer Ansicht, dass die Ansicht, die dem Benutzer angezeigt wird, nichts anderes als das aufgeblasene XML-Layout ist. Keine Änderung in der Codierung oder zur Laufzeit.
Hamzeh Soboh

2
@vitakot Können Sie die Liste aus dem Anwendungsfall des Adapters etwas näher erläutern? Warum können Sie onCreateView nicht einfügen?
Lujop

1
Gute Antwort, aber es ist hilfreicher, wenn Sie @vitakot erklären können, warum wir die onActivityCreated-Methode verwenden müssen, wenn Sie Daten aus Adaptern in die Listenansicht / Reyclerview eingeben.
user3189761

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.