Android:如何从后台删除 fragment ?

标签 android android-fragments

我有这样的情况,我想从 backstack 中清除所有 fragment ,除了可见的 fragment (即在顶部)

比如backstack中有4个fragment A->B->C->D(D在最上面)

现在我想从后台删除 fragment A、B、C。但约束是在从后台堆栈中删除历史记录时,不应对 fragment D 产生任何可见的影响。

这是我的代码。

FragmentManager fm = getActivity().getSupportFragmentManager();
                Bundle bundle = new Bundle();
                OrderReceiptFragment orderReceiptFragment = new OrderReceiptFragment();
                bundle.putSerializable("orderHistory", orderHistory);
                orderReceiptFragment.setArguments(bundle);
                CommonUtil.clearBackstack(fm);
                fm.beginTransaction().setCustomAnimations(R.anim.enter_from_left,
                        R.anim.exit_to_right)
                        .replace(R.id.container, orderReceiptFragment).commit();

清空堆栈的方法

public static void clearBackstack(FragmentManager fragmentManager) {    
    fragmentManager.popBackStack(0, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}

这里的问题是——在清除后台堆栈时,后台堆栈中的第一个 fragment 在几毫秒内变得可见。这看起来很奇怪。有人对此有任何解决方案吗?

最佳答案

你可以这样做

方法一:逐个删除

 FragmentManager fm = getActivity().getSupportFragmentManager();
      for (int i = 0; i < fm.getBackStackEntryCount(); ++i) {
      fm.popBackStack();
}

方法二

 FragmentManager fm = getActivity().getSupportFragmentManager();
fm .popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) 

Refer

查看此 Answer .你可以找到不同的方法

另请参阅popBackStackImmediate

关于Android:如何从后台删除 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24119014/

相关文章:

android - 是否可以减少上下文切换时间

Android:如何更改 Navigation Drawer onBackPressed() 中的选定项?

android - 使用颜色选择器更改 fragment 中编辑文本的背景颜色

java - Android fragment 类访问抽象方法的类组织

android - FragmentPagers 中的 fragment 交互监听器

java - 启动器图标消失了

android - Extras 文件夹意外删除 - Android SDK

android - Android 中的 Handler-Looper 实现

使用本地 Assets /HTML/资源时,jQuery getScript 在 Android WebView 中不起作用

android - 从对话框 fragment 启动 Activity