我创建的片段取决于其父活动的少数属性。我浏览了Fragment Life cycle个文件。我需要将活动副本存储在变量中,以便以后可以访问它。有两个地方,我可以做到这一点
哪个是推荐的最佳地点,为什么?在getActivity()被调用
之后,有一些情况onAttach在片段中返回null答案 0 :(得分:1)
如果在调用onAttach()之后getActivity()返回null,则只表示该片段不再附加到activity。所以最安全的地方仍然是onAttach()。
答案 1 :(得分:0)
最近几天,我正在研究片段。片段生命周期描述如下: onAttach() - 的onCreate()--- onCreateView() - onViewCreate() - onActiviyCreate(); 然后我查找源代码:
@CallSuper
public void onAttach(Context context) {
mCalled = true;
final Activity hostActivity = mHost == null ? null : mHost.getActivity();
if (hostActivity != null) {
mCalled = false;
onAttach(hostActivity);
}
}
@Deprecated
@CallSuper
public void onAttach(Activity activity) {
mCalled = true;
}
我们发现onAttach()会检查hostActivity是否存在,但无法确保活动存在。 onActivityCreate()在创建片段活动时被调用,并告诉与新活动实例完全关联的片段。换句话说,活动已经完成了自己的Activity.onCreate()。
所以我建议你在onActivityCreate()方法上做。