假设我们在后台堆栈中的一个活动中托管了三个片段
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/