我真的对Fragment
lifecycle感到困惑,特别是在调用getActivity()
时。有时,您无法通过Activity
获得getActivity()
。它总是引起一些令人费解的错误
感谢任何人都可以解决这个难题。
答案 0 :(得分:12)
getActivity()
可以在您的片段处于准备阶段并且即将准备就绪时为空。
片段生命周期与回调方法绑定。当片段正在准备时,这些方法将在某个时间被调用。
getActivity()
将是有效实例。它发生在onCreateView()
之后您对活动存在最安全的选择是:
答案 1 :(得分:0)
根据the current documentation (Dec 2018),它显示onAttach()
在onCreate()
和onCreateView()
之前的开头被调用。使用这些方法getActivity()
应该是安全的。
在Support v4 Fragment documentation for onActivityCreated()
中,该方法为:
在创建片段的活动并实例化此片段的视图层次结构时调用。
此处的重要部分是“活动已创建”,即Activity.onCreate()
已完成执行。在此之前,我们仍处于该方法之内。
这可以通过查看the FragmentActivity.onCreate()
source code来确认,您可以在方法开始时遵循将片段附加到活动的过程,然后恢复片段状态等。因此,该活动在所有这些地方,但是从技术上讲,它还没有完成整个创建过程。