我将我的 Android 应用程序移植到了蜂巢中,并且为了使用 Fragments,我做了一个很大的重构。在我以前的版本中,当我按下 Home 按钮时,我会执行 aACTIVITY_CLEAR_TOP以重置后退堆栈。
ACTIVITY_CLEAR_TOP
现在我的应用程序只是一个带有多个片段的 Activity,所以当我按下 Home 按钮时,我只需替换其中的一个片段。如何在不必使用startActivity标志的ACTIVITY_CLEAR_TOP情况下清除我的后台堆栈?
startActivity
我最终只是使用:
FragmentManager fm = getActivity().getSupportFragmentManager(); for(int i = 0; i < fm.getBackStackEntryCount(); ++i) { fm.popBackStack(); }
但同样可以使用类似的东西:
((AppCompatActivity)getContext()).getSupportFragmentManager().popBackStack(String name, FragmentManager.POP_BACK_STACK_INCLUSIVE)
这将弹出所有状态到指定的状态。然后你可以用你想要的替换片段