【发布时间】:2015-04-22 12:09:45
【问题描述】:
我有一个带有 to 布局的应用程序。 在纵向中,我在屏幕上有一个碎片,在陆地 - 两个。
在我的 Activity 的 OnCreate 中:
frameDetailsFragment = (FrameLayout) findViewById(R.id.detailsFragment);
if (frameDetailsFragment != null){
if (EntryPool.getPool(this).getEntries().size() > 0) {
detailsFragment = DetailsFragment.newInstance(EntryPool.getPool(this).getEntries().get(0));
getFragmentManager().beginTransaction()
.add(R.id.detailsFragment, detailsFragment, DETAILS_FRAGMENT)
.commit();
}
}
因此,当我们处于纵向时,我们不会创建 DetailsFragment。 在 DetailsFragment 中没有什么有趣的东西,没有 setRetainState,而且我不在 onAtach() 中保存活动。我只是注销生命周期方法。 因此,当我在 portarit 中启动应用程序时,它可以工作(未创建详细信息片段)。然后我旋转 - 详细信息碎片被装箱。 然后我再次旋转 - 我看到了这个:
04-22 12:06:42.737 2692 2692 I ANT DetailsFragment :: onDestroy
04-22 12:06:42.737 2692 2692 I ANT DetailsFragment :: onDetach
04-22 12:06:42.761 2692 2692 I ANT DetailsFragment :: onAttach
04-22 12:06:42.761 2692 2692 I ANT DetailsFragment :: onCreate
04-22 12:06:42.805 2692 2692 D ANT MainActivity oncretae
04-22 12:06:42.845 2692 2692 I ANT DetailsFragment :: onCreateView
04-22 12:06:42.857 2692 2692 I ANT DetailsFragment :: onActivityCreated
正如我们所看到的,frag recretaed bu 片段管理器。为什么?请帮帮我,我在这种行为中看不到任何逻辑 - 在执行添加片段事务时我没有写 setRetainInstanse,也没有 addToBackState
【问题讨论】: