为什么我们可以调用在onActivityCreated之前运行的onCreateView中的getActivity()?

时间:2015-07-06 00:48:23

标签: android fragment lifecycle

我真的对Fragment lifecycle感到困惑,特别是在调用getActivity()时。有时,您无法通过Activity获得getActivity()。它总是引起一些令人费解的错误 感谢任何人都可以解决这个难题。

2 个答案:

答案 0 :(得分:12)

getActivity()可以在您的片段处于准备阶段并且即将准备就绪时为空。

片段生命周期与回调方法绑定。当片段正在准备时,这些方法将在某个时间被调用。

您对活动存在最安全的选择是:

答案 1 :(得分:0)

根据the current documentation (Dec 2018),它显示onAttach()onCreate()onCreateView()之前的开头被调用。使用这些方法getActivity()应该是安全的。

Fragment lifecycle


Support v4 Fragment documentation for onActivityCreated()中,该方法为:

  

在创建片段的活动并实例化此片段的视图层次结构时调用。

此处的重要部分是“活动已创建”,即Activity.onCreate()已完成执行。在此之前,我们仍处于该方法之内。

这可以通过查看the FragmentActivity.onCreate() source code来确认,您可以在方法开始时遵循将片段附加到活动的过程,然后恢复片段状态等。因此,该活动在所有这些地方,但是从技术上讲,它还没有完成整个创建过程。