
[英]Make HTTP requests in Fragment onCreateView, onCreate or onActivityCreated?
[英]Difference and uses of onCreate(), onCreateView() and onActivityCreated() in fragments
片段中的onCreate()
、 onCreateView()
和onActivityCreated()
之间有什么区别,它们各自的用途是什么?
更新:
从 API 级别 28 开始弃用onActivityCreated()
。
onCreate():
Fragment
的onCreate()
方法在Activity
的onAttachFragment()
但在Fragment
的onCreateView()
之前调用。
在此方法中,您可以分配变量、获取Intent
附加项以及任何其他不涉及视图层次结构的内容(即非图形初始化)。 这是因为当Activity
的onCreate()
未完成时可以调用此方法,因此尝试访问此处的 View 层次结构可能会导致崩溃。
onCreateView():
在onCreate()
被调用后(在Fragment
), Fragment
的onCreateView()
被调用。 您可以分配您的View
变量并进行任何图形初始化。 您应该从此方法返回一个View
,这是主 UI 视图,但如果您的Fragment
不使用任何布局或图形,您可以返回null
(如果您不覆盖,默认情况下会发生)。
onActivityCreated():
顾名思义,这是在Activity
的onCreate()
完成后调用的。 它在onCreateView()
之后调用,主要用于最终的初始化(例如,修改 UI 元素)。 这已从 API 级别 28 开始弃用。
总结...
...它们都在Fragment
被调用,但在不同的时间被调用。
onCreate()
首先被调用,用于进行任何非图形初始化。 接下来,您可以分配和声明要在onCreateView()
使用的任何View
变量。 之后,使用onActivityCreated()
来做任何你想在一切都完成后做的最终初始化。
如果你想查看官方的 Android 文档,可以在这里找到:
Stack Overflow 上还有一些略有不同但不太成熟的问题/答案:
对于任何寻求简洁、图片式答案的人:
https://hanaskuliah.wordpress.com/2015/12/07/android-5-development-part-6-fragment/
和,
onActivityCreated()
现在作为 Fragments 版本 1.3.0-alpha02被弃用
onActivityCreated() 方法现已弃用。 接触片段视图的代码应该在 onViewCreated()(在 onActivityCreated() 之前立即调用)中完成,其他初始化代码应该在 onCreate() 中。 要在活动的 onCreate() 完成时专门接收回调,应该在 onAttach() 中在活动的生命周期上注册 LifeCycleObserver,并在收到 onCreate() 回调后将其删除。
详细信息可以在这里找到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.