片段中onCreate(),onCreateView()和onActivityCreated()的区别和用法

Far*_*deh 298 android oncreate android-lifecycle android-fragments fragment-lifecycle

什么是之间的差异onCreate(),onCreateView()以及onActivityCreated()将它们各自用于片段和什么?

Far*_*deh 373

的onCreate():

onCreate()在的方法Fragment后叫ActivityonAttachFragment(),但在这之前FragmentonCreateView().
在此方法中,您可以分配变量,获取Intent额外内容以及不涉及View层次结构的任何其他内容(即非图形初始化).这是因为这种方法可以被称为当ActivityonCreate()还没有完成,所以想在这里访问View层次结构可能导致崩溃.

onCreateView():

onCreate()调用之后(在Fragment)中,调用Fragments onCreateView().您可以分配View变量并执行任何图形初始化.您应该View从此方法返回一个,这是主UI视图,但如果您Fragment不使用任何布局或图形,则可以返回null(默认情况下,如果您不覆盖).

onActivityCreated():

正如其名国,这是后叫ActivityonCreate()完成.它被称为after onCreateView(),主要用于最终初始化(例如,修改UI元素).


总而言之......
......他们都被召唤,Fragment但在不同的时间被召唤.
首先onCreate()调用,用于执行任何非图形初始化.接下来,您可以分配和声明View要使用的任何变量onCreateView().然后,onActivityCreated()在完成所有操作后,使用您要执行的任何最终初始化.


如果你想查看官方的Android文档,可以在这里找到:
- - -onCreate()
onCreateView()
onActivityCreated()

Stack Overflow上还有一些略有不同但不太发达的问题/答案:

  • 我想我会在onCreate()上实现非图形初始化,以便在旋转屏幕时不再调用它们.事实证明我必须调用fragment.setRetainInstance(true),否则在旋转屏幕时会再次调用onCreate()和onCreateView(). (6认同)

pul*_*ion 119

对于任何寻找简洁,图片答案的人:

在此输入图像描述 https://hanaskuliah.wordpress.com/2015/12/07/android-5-development-part-6-fragment/


和,

在此输入图像描述

  • 第一个图有用,但_good领主,字体!_ (15认同)
  • 同意.对于像这样的事情,漫画Sans是必要的 (13认同)
  • 这是我第一次在同一张图中看到 3 种不同的字体,不知何故,我的生活现在感觉很完整。 (4认同)

Gas*_*lén 11

onActivityCreated() - 已弃用

onActivityCreated()现在已作为 Fragments版本 1.3.0-alpha02 弃用

onActivityCreated() 方法现已弃用。接触片段视图的代码应该在 onViewCreated()(在 onActivityCreated() 之前立即调用)中完成,其他初始化代码应该在 onCreate() 中。要在活动的 onCreate() 完成时专门接收回调,应该在 onAttach() 中在活动的生命周期上注册 LifeCycleObserver,并在收到 onCreate() 回调后将其删除。

详细信息可以在这里找到