是否有必要在片段onActivityCreated方法中检查父活动是否为空?

时间:2014-12-31 18:35:33

标签: java android android-activity android-fragments android-lifecycle

我正在阅读以下tutorial,其中作者正在展示如何使用片段实现标签界面。在设置列表适配器之前,每个片段都对父活动进行空检查:

public class LocationListFragment extends ListFragment {

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        Activity activity = getActivity();

        if (activity != null) {            
           ListAdapter listAdapter = new LocationModelListAdapter(activity, FragmentTabTutorialApplication.sLocations);
           setListAdapter(listAdapter);
        }
    }
}

我正在努力更好地理解活动和片段生命周期之间的关系,所以我的问题是:为什么有必要这样做?文档说在活动的onActivityCreated方法返回后调用onCreate方法,如果是这种情况,此时活动如何为空?

1 个答案:

答案 0 :(得分:3)

我认为你不需要在这个特定的覆盖上检查它。片段生命周期与其托管活动密切相关。

我认为大多数人都认为getActivity() != null是一个很好的做法,因为它可以为null并且如果你因为处理程序/ asyncTask在片段本身已经脱离时调用它而导致应用程序崩溃活动,因此getActivity()返回null。

在你的主(UI)线程(调用onActivityCreated()的地方)上,它不应该发生。