因此,当您离开活动设置=>开发人员选项=>不保留活动时,我启用了销毁活动的设置
这应该基本上复制一个被垃圾收集的活动或片段,然后我必须通过包保存的实例状态恢复数据。
所以我理解它是如何工作的。但是,当我从片段 1 导航到片段 2,然后将应用程序置于后台,然后置于前台(破坏活动)时,片段 1 和片段 2 似乎同时显示。其中应该只显示片段 2。
我不知道这是否是我必须管理隐藏和显示片段 onsavedinstance 的标准。或者如果我的代码中的某些东西破坏了东西。以下是我推送片段的方式,希望对您有所帮助:
public void pushFragmentWithAnimation(FragmentManager fm, int parentId, Fragment currentFrag, Fragment newFrag, int animEntry, int animExit) {
hideSoftKeyboard(currentFrag.getActivity());
FragmentTransaction ft = fm.beginTransaction();
// See: http://developer.android.com/reference/android/app/FragmentTransaction.html#setCustomAnimations(int, int, int, int)
ft.setCustomAnimations(animEntry, animExit, animEntry, animExit);
ft.add(parentId, newFrag, String.format("Entry%d", fm.getBackStackEntryCount())).hide(currentFrag).show(newFrag);
ft.addToBackStack(null);
ft.commit();
}
片段 1 仍在后台堆栈中,因为当我按下返回时,我只看到片段 1。如果您知道为什么会发生这种情况,请告诉我。