onAttach()或onActivityCreated(),这是阅读活动的最佳地点?

时间:2014-02-03 09:39:20

标签: java android android-fragments

我创建的片段取决于其父活动的少数属性。我浏览了Fragment Life cycle个文件。我需要将活动副本存储在变量中,以便以后可以访问它。有两个地方,我可以做到这一点

哪个是推荐的最佳地点,为什么?在getActivity()被调用

之后,有一些情况onAttach在片段中返回null

2 个答案:

答案 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()方法上做。