fragments中onCreate()、onCreateView()和onActivityCreated()的区别和使用

Difference and uses of onCreate(), onCreateView() and onActivityCreated() in fragments

片段中的onCreate()onCreateView()onActivityCreated()有什么区别,它们各自的用途是什么?

更新:

onActivityCreated() 已从 API 级别 28 弃用。


onCreate():

Fragment 中的 onCreate() 方法 ActivityonAttachFragment() 之后但在此之前调用 FragmentonCreateView().
在此方法中,您可以分配变量、获取 Intent 额外内容,以及 不涉及视图层次结构的任何其他内容 (即非图形初始化)。这是因为当 ActivityonCreate() 未完成时可以调用此方法,因此尝试访问此处的视图层次结构可能会导致崩溃。

onCreateView():

调用onCreate()后(在Fragment中),调用FragmentonCreateView()。您可以分配 View 变量并 进行任何图形初始化 。您应该通过此方法 return View,这是主要的 UI 视图,但如果您的 Fragment 不使用任何布局或图形,您可以 return null(如果您不覆盖,则默认发生)。

onActivityCreated():

顾名思义,这是 ActivityonCreate() 完成 之后调用。它在onCreateView()之后被调用,主要用于最后的初始化(例如,修改UI元素)。这是 已弃用,来自 API 级别 28。


总结一下...
...它们都在 Fragment 中被调用,但在不同的时间被调用。
onCreate() 首先被调用,用于进行任何非图形初始化。接下来,您可以分配和声明要在 onCreateView() 中使用的任何 View 变量。之后,使用 onActivityCreated() 进行所有您想要在一切完成后进行的最终初始化。


如果你想查看官方Android文档,可以在这里找到:

Stack Overflow 上也有一些略有不同但开发程度较低的 questions/answers:

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

对于任何寻求简明、图片答案的人:

https://hanaskuliah.wordpress.com/2015/12/07/android-5-development-part-6-fragment/


而且,

onActivityCreated() - 已弃用

onActivityCreated() 现在已弃用为 Fragments Version 1.3.0-alpha02

The onActivityCreated() method is now deprecated. Code touching the fragment's view should be done in onViewCreated() (which is called immediately before onActivityCreated()) and other initialization code should be in onCreate(). To receive a callback specifically when the activity's onCreate() is complete, a LifeCycleObserver should be registered on the activity's Lifecycle in onAttach(), and removed once the onCreate() callback is received.

可以找到详细信息here