假设我们在后台堆栈中的一个活动中托管了三个片段

A-> B-> C

当我单击后退时,按下片段CI还要立即从后堆栈中删除B.请注意,在某些情况下,我可能想返回到B,但在大多数情况下,我想一起清除C和B以达到答:我应该如何实现这一点,我应该两次调用popBackStack()还是应该有某种委托机制来通知B C已经关闭,并且我们不希望显示B所以请进行清理。

最佳答案

在片段A中执行此操作。

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


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

将片段添加到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/

10-10 02:34