Unterschied und Verwendung von onCreate(), onCreateView() und onActivityCreated() in Fragmenten

Lesezeit: 4 Minuten

Was sind die Unterschiede zw onCreate(), onCreateView()und onActivityCreated() in Fragmenten und wofür würden sie jeweils verwendet werden?

  • Siehe auch: stackoverflow.com/questions/27227906/…

    – Brad Larson

    18. September 2015 um 14:56 Uhr

  • @BradLarson Ich verstehe nicht, warum dies geschlossen wurde. Es hat sich als relativ beliebte Frage erwiesen und unterscheidet sich von dem in Ihrem Kommentar angegebenen Link. Diese Frage fragt nach dem Unterschied zwischen den drei verschiedenen Methoden und ihrem Vergleich miteinander, aber die Frage, die Sie in Ihrem Kommentar verlinkt haben, erwähnt nur zwei dieser Methoden.

    – Farbod Salamat-Zadeh

    18. September 2015 um 15:11 Uhr

  • @BradLarson Fair genug und gut entdeckt. Könnte ich jetzt, da ich ein Verständnis habe, keine Antwort schreiben, die die drei Methoden besser vergleicht, und auf die Links für zusätzliche Details verweisen?

    – Farbod Salamat-Zadeh

    18. September 2015 um 15:37 Uhr

  • @FarbodSalamat-Zadeh – Sicher. Ich habe die Frage erneut geöffnet, wenn Sie glauben, dass Sie eine bessere Antwort geben können. Ich wollte es einfach nicht unbeantwortet lassen, wenn ich konnte.

    – Brad Larson

    18. September 2015 um 15:52 Uhr


1641923135 518 Reducing android app apk size
Farbod Salamat-Zadeh

AKTUALISIEREN:

onActivityCreated() ist ab API-Level 28 veraltet.


onCreate():

Die onCreate() Methode in a Fragment ist genannt nach dem Activity‘S onAttachFragment() aber vorher Fragment‘S onCreateView().
In dieser Methode können Sie Variablen zuweisen, get Intent Extras und alles andere, was nicht die View-Hierarchie betrifft (dh nicht-grafische Initialisierungen). Dies liegt daran, dass diese Methode aufgerufen werden kann, wenn die Activity‘S onCreate() ist noch nicht abgeschlossen, daher kann der Versuch, hier auf die View-Hierarchie zuzugreifen, zu einem Absturz führen.

onCreateView():

Nach dem onCreate() heißt (in der Fragment), der Fragment‘S onCreateView() wird genannt. Sie können Ihre zuweisen View Variablen und Führen Sie alle grafischen Initialisierungen durch. Es wird erwartet, dass Sie a zurückgeben View von dieser Methode, und dies ist die Hauptansicht der Benutzeroberfläche, aber wenn Ihre Fragment keine Layouts oder Grafiken verwendet, können Sie zurückkehren null (passiert standardmäßig, wenn Sie nicht überschreiben).

onActivityCreated():

Wie der Name schon sagt, ist dies genannt nach dem Activity‘S onCreate() hat vervollständigt. Es heißt nach onCreateView(), und wird hauptsächlich für abschließende Initialisierungen (z. B. das Ändern von UI-Elementen) verwendet. Das ist veraltet ab API-Level 28.


Um zusammenzufassen…

… sie alle heißen in der Fragment werden aber zu unterschiedlichen Zeiten angerufen.
Die onCreate() wird zuerst aufgerufen, um alle nicht-grafischen Initialisierungen durchzuführen. Als Nächstes können Sie beliebige zuweisen und deklarieren View Variablen, die Sie verwenden möchten onCreateView(). Danach verwenden onActivityCreated() um alle abschließenden Initialisierungen durchzuführen, die Sie durchführen möchten, sobald alles abgeschlossen ist.


Wenn Sie die offizielle Android-Dokumentation anzeigen möchten, finden Sie sie hier:

Es gibt auch einige etwas andere, aber weniger entwickelte Fragen/Antworten hier auf Stack Overflow:

  • onCreate() vs onCreateView()
  • onCreateView() vs onActivityCreated()

  • Ich dachte, ich würde nicht grafische Initialisierungen bei onCreate() implementieren, damit sie nicht erneut aufgerufen werden, wenn der Bildschirm gedreht wird. Es stellt sich heraus, dass ich fragment.setRetainInstance(true) aufrufen muss, da sonst sowohl onCreate() als auch onCreateView() erneut aufgerufen werden, wenn der Bildschirm gedreht wird.

    – Verdammtes Gemüse

    13. Februar 2016 um 4:52 Uhr

  • Ist der Zugriff auf die Ansichtshierarchie in onCreateView() sicher?

    – Codi

    11. April 2016 um 6:23 Uhr

  • Allerdings wird onCreate() der Aktivität möglicherweise erst beendet, wenn onActivityCreated() ? Besteht die Möglichkeit eines Absturzes in onCreateView für den Zugriff auf die Ansichtshierarchie? Ich bin mir nicht sicher, was der Unterschied zwischen onCreateView() / onActivityCreated() ist

    – Codi

    11. April 2016 um 23:45 Uhr


  • Zu beachten ist (zumindest bei AppCompatActivity), dass bei der Neuerstellung der Aktivität (z. B. nachdem sie minimiert und beendet wurde) die Fragmente onCreate() aufgerufen werden, bevor die Aktivitäten onCreate() und super.onCreate() beendet sind. Dies kann ein Problem sein, wenn Sie etwas wie Dagger verwenden und auf etwas in der eingefügten übergeordneten Aktivität zugreifen müssen. Eine Lösung hierfür besteht darin, den Code in onActivityCreated() einzufügen, das immer aufgerufen wird, wenn onCreate() aufgerufen wird.

    – Nikolaus

    10. Juli 2017 um 0:06 Uhr

  • Ist es sicher anzunehmen, dass die Aktivität onCreate fertig ist, sobald die onCreateView seiner Fragmente heißt?

    – nullmn

    31. Dezember 2019 um 16:48 Uhr


Für alle, die eine prägnante, bildhafte Antwort suchen:

Geben Sie hier die Bildbeschreibung ein
https://hanaskuliah.wordpress.com/2015/12/07/android-5-development-part-6-fragment/


Und,

Geben Sie hier die Bildbeschreibung ein

  • Einverstanden. Comic Sans ist für solche Dinge notwendig

    – Kartik Chugh

    26. Januar 2018 um 3:19 Uhr

  • Es ist das erste Mal, dass ich 3 verschiedene Schriftarten im selben Diagramm sehe, und irgendwie fühlt sich mein Leben jetzt vollständig an.

    – Gilsand

    8. Februar 2019 um 13:10 Uhr

  • Wann genau könnte ein Fragment neu gestartet werden?

    – Saurabh

    14. Februar 2020 um 15:40 Uhr

  • Wie kommt es, dass das Fragment nicht neu erstellt wird, wenn sein Prozess tot ist? AFAIK, nur der Aufgabenstatus, der als Bündel erhalten bleibt, und die App neu erstellt wird, wird wieder in den Vordergrund geholt.

    – stdout

    29. Februar 2020 um 21:16 Uhr

onActivityCreated() – Veraltet

onActivityCreated() ist jetzt als Fragmente veraltet Version 1.3.0-alpha02

Die Methode onActivityCreated() ist jetzt veraltet. Code, der die Ansicht des Fragments berührt, sollte in onViewCreated() (das unmittelbar vor onActivityCreated() aufgerufen wird) ausgeführt werden, und anderer Initialisierungscode sollte in onCreate() enthalten sein. Um einen Rückruf speziell dann zu erhalten, wenn der onCreate() der Aktivität abgeschlossen ist, sollte ein LifeCycleObserver im Lebenszyklus der Aktivität in onAttach() registriert und entfernt werden, sobald der onCreate()-Rückruf empfangen wird.

Detaillierte Informationen finden Sie Hier

916970cookie-checkUnterschied und Verwendung von onCreate(), onCreateView() und onActivityCreated() in Fragmenten

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

Privacy policy