启动应用程序时,第一次调用setPrimaryItem()
时,我向主机活动添加了一个新片段。该片段从viewpager上的当前片段获取数据集。我将其添加到setPrimaryItem()
内是因为我想确保在创建viewpager片段后将创建附加片段。
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
if (latestFragment == null) {
latestFragment = (ViewPagerFragment) object;
addAdditionFragment();
}
latestFragment = (ViewPagerFragment) object;
super.setPrimaryItem(container, position, object);
}
这是我运行应用程序时发生的事情:
HostActivity.setPrimaryItem();
ViewPagerFragment.onAttach();
ViewPagerFragment.onCreate();
ViewPagerFragment.onCreateView();
ViewPagerFragment.onActivityCreated();
ViewPagerFragment.onStart();
ViewPagerFragment.onResume();
AdditionFragment.onAttach();
AdditionFragment.onCreate();
AdditionFragment.onCreateView();
AdditionFragment.onActivityCreated();
AdditionFragment.onStart();
AdditionFragment.onResume();
将我的应用程序最小化到后台并打开其他一些应用程序之后。我回到应用程序,再次创建HostActivity和片段。自从我最小化我的应用程序以来,我没有看到活动以及片段被破坏,只调用了onStopped()
。
这是发生了什么
ViewPagerFragment.onAttach();
ViewPagerFragment.onCreate();
AdditionFragment.onAttach();
AdditionFragment.onCreate();
ViewPagerFragment.onCreateView();
ViewPagerFragment.onActivityCreated();
AdditionFragment.onCreateView();
AdditionFragment.onActivityCreated();
ViewPagerFragment.onStart();
ViewPagerFragment.onResume();
AdditionFragment.onStart();
AdditionFragment.onResume();
如您所见,即使未调用setPrimaryItem()
,AdditionFragment也是在开始时创建的。尝试从ViewPager片段获取的数据AdditionFragment为null,因为LatestFragment为null。