Android如何像活动启动模式那样启动片段

bz4sfanl  于 2022-11-03  发布在  Android
关注(0)|答案(1)|浏览(202)

例如片段A -〉片段B -〉片段C -〉片段D。
如何像Activity singleTask启动模式一样重新启动片段A。
我发现片段D调用popBackStack 4次,并添加一个新的片段A到backstack。使用片段动画使它看起来像回到了片段A。但这只是一个视觉欺骗。
有时候,我不知道我需要弹出多少次BackStack。
有没有办法在不使用Jetpack导航的情况下做到这一点?

atmip9wb

atmip9wb1#

哦,我发现这个函数可以解决这个问题。
popBackStack(name, flag)
我以前用错了,所以它不起作用。(多么愚蠢的错误,我忘记在backstack中设置Framgent名称)
我们需要在添加到片段backstack时设置片段名称。
设置名称后,popBackStack(name, flag)就可以工作了。
当flag = 0时,不弹出目标片段;
当flag = 1时,目标Fragment也将被弹出;

public void addFragmentToBackStack(Fragment fragment) {
        getSupportFragmentManager().beginTransaction()
                .addToBackStack(fragment.getClass().getName())
                .replace(R.id.fl_container, fragment, fragment.getClass().getSimpleName())
                .commitAllowingStateLoss();
    }

相关问题