android - 删除返回堆栈中的多个 fragment

标签 android performance android-fragments

假设我们在返回堆栈的一个 Activity 中托管了三个 fragment

A->B->C

当我点击后退时按下 fragment C 我也想立即从后退堆栈中删除 B。请注意,在某些情况下我可能想回到 B 但在大多数情况下我想一起清除 C 和 B到达 A。如果我调用 popBackStack() 两次,或者我应该有某种委托(delegate)机制来通知 B C 已经关闭并且我们不希望显示 B 所以请清理。

最佳答案

在 fragment A 中执行此操作..

getSupportFragmentManager().beginTransaction()
                .add(R.id.containerMain, new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A")
                .commit();

并且不要使用 addToBackStack(..) 在这种情况下,当您从其他 fragment 返回时,您将始终返回到 fragment A。 以及何时指定返回特定 fragment

将 fragment 添加到 BackStack。在 commit() 事务之前,使用 addToBackStack() 方法即

 addToBackStack("Some String").commit();

并在 onBackPressed() 中

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
        getSupportFragmentManager().popBackStack(); 
    } else { 
        this.finish(); 
    }
}

关于android - 删除返回堆栈中的多个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42589476/

相关文章:

android - 如何在 Fragment Android 中处理 onBackPressed

android - 如何对 ViewPager 中的所有页面使用单个 Fragment?

android - Google Play 中的 AWS 安全警报

performance - 从一个数组中减去另一个数组的最高效方法

java - 如何防止android应用程序因后台线程异常而崩溃?

python - Numpy 距阵列中心的平均距离

具有四舍五入的主日期时间键的 MySQL 改进

android - 使用 AlertDialog.Builder 时防止 StatusBar 显示

android,videoView打不开这个视频在线视频

java - 在距离 10 的圆内画一个圆