我正在阅读以下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
方法,如果是这种情况,此时活动如何为空?
答案 0 :(得分:3)
我认为你不需要在这个特定的覆盖上检查它。片段生命周期与其托管活动密切相关。
我认为大多数人都认为getActivity() != null
是一个很好的做法,因为它可以为null并且如果你因为处理程序/ asyncTask在片段本身已经脱离时调用它而导致应用程序崩溃活动,因此getActivity()
返回null。
在你的主(UI)线程(调用onActivityCreated()
的地方)上,它不应该发生。