更新:
onActivityCreated()
从 API Level 28 开始已被弃用。
onCreate():
Fragment
中的 onCreate()
方法在 Activity
的 onAttachFragment()
之后但在该 Fragment
的 onCreateView()
之前被调用。在此方法中,您可以分配变量、获取 Intent
extras 和任何不涉及 View 层次结构(即非图形化初始化)的内容。这是因为此方法可能在 Activity
的 onCreate()
完成之前被调用,因此在此处尝试访问 View 层次结构可能导致崩溃。
onCreateView():
在 Fragment
中调用 onCreate()
之后,会调用 Fragment
的 onCreateView()
。您可以分配视图变量并执行任何图形化初始化。您应该从此方法返回一个 View
,这是主 UI 视图,但如果您的 Fragment
不使用任何布局或图形,则可以返回 null
(如果您没有覆盖此方法,则会默认发生)。
onActivityCreated():
顾名思义,此方法在 Activity
的 onCreate()
完成后被调用。它在 onCreateView()
之后被调用,主要用于最终初始化(例如修改 UI 元素)。从 API level 28 开始,此方法已弃用。
总结一下...
Fragment
中的 onCreate()
方法在 Activity
的 onAttachFragment()
之后但在该 Fragment
的 onCreateView()
之前调用。在此方法中,您可以分配变量、获取 Intent
extras 和任何不涉及 View 层次结构的内容。调用 onCreateView()
后,您可以执行图形化初始化。最终初始化应在已弃用的 onActivityCreated()
方法中完成。
Fragment
,但在不同的时候被调用。onCreate()
,用于执行任何非图形化初始化。接下来,您可以在onCreateView()
中分配和声明任何要在其中使用的View
变量。之后,使用onActivityCreated()
进行任何最终初始化,一旦完成了所有操作,就可以执行此操作。
如果您想查看官方的Android文档,请点击此处:
这里还有一些略微不同但较少开发的问题/答案在Stack Overflow上:
onCreate
可能是最好的选择,但这取决于你想要处理何时完成。只需记住,在 onCreate
中无法访问视图层次结构。 - Farbod Salamat-ZadehonCreateView
被调用时,可以安全地假设其所在的 Activity 的 onCreate
已经完成了吗? - nullmn对于任何寻求简明扼要的图解答案的人:
https://hanaskuliah.wordpress.com/2015/12/07/android-5-development-part-6-fragment/
并且,
onActivityCreated()
自Fragments 版本1.3.0-alpha02开始已被弃用。
onActivityCreated()
方法现已被弃用。与Fragment视图相关的代码应在onViewCreated()
中处理(该方法在onActivityCreated()
之前立即调用),其他初始化代码应在onCreate()
中处理。要在activity的onCreate()
完成时特别接收一个回调,应该在onAttach()
中注册一个 LifeCycleObserver,并在接收到onCreate()
回调后将其删除。
详细信息请参见此处