例如片段A -〉片段B -〉片段C -〉片段D。如何像Activity singleTask启动模式一样重新启动片段A。我发现片段D调用popBackStack 4次,并添加一个新的片段A到backstack。使用片段动画使它看起来像回到了片段A。但这只是一个视觉欺骗。有时候,我不知道我需要弹出多少次BackStack。有没有办法在不使用Jetpack导航的情况下做到这一点?
atmip9wb1#
哦,我发现这个函数可以解决这个问题。popBackStack(name, flag)我以前用错了,所以它不起作用。(多么愚蠢的错误,我忘记在backstack中设置Framgent名称)我们需要在添加到片段backstack时设置片段名称。设置名称后,popBackStack(name, flag)就可以工作了。当flag = 0时,不弹出目标片段;当flag = 1时,目标Fragment也将被弹出;
popBackStack(name, flag)
public void addFragmentToBackStack(Fragment fragment) { getSupportFragmentManager().beginTransaction() .addToBackStack(fragment.getClass().getName()) .replace(R.id.fl_container, fragment, fragment.getClass().getSimpleName()) .commitAllowingStateLoss(); }
1条答案
按热度按时间atmip9wb1#
哦,我发现这个函数可以解决这个问题。
popBackStack(name, flag)
我以前用错了,所以它不起作用。(多么愚蠢的错误,我忘记在backstack中设置Framgent名称)
我们需要在添加到片段backstack时设置片段名称。
设置名称后,
popBackStack(name, flag)
就可以工作了。当flag = 0时,不弹出目标片段;
当flag = 1时,目标Fragment也将被弹出;