在FragmentManager中管理BackStackEntries

Lab*_*lan 5 android android-fragments android-3.0-honeycomb

如何清除BackStackEntriesFragmentManager?这是我用来更改片段对象的代码:

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
Fragment homeFragment = new Home();
fragmentTransaction.replace(R.id.mainFragement, homeFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)

在特定情况下,我需要删除完整的backstack条目.我没有在片段管理器中找到任何特定的方法.你有什么想法?

小智 6

我一直在研究一种方法,我认为你要做的是什么,但我能从文档中找到的唯一方法就是这种方法是否只是清空BackStack,或者是否有任何暗示查看容器.基本上,它找到位于堆栈顶部的条目并删除所有内容,包括该条目.如果其他人认为有负面影响,请告诉我,因为我会很好奇:

public static void clearBackStack(FragmentManager manager){
    int rootFragment = manager.getBackStackEntryAt(0).getId();
    manager.popBackStack(rootFragment, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
Run Code Online (Sandbox Code Playgroud)

  • 还有一个快捷方式:`manager.popBackstack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE)` (5认同)