假设我们在后台堆栈中的活动中托管了三个片段
A-> B-&以及c
当我点击后面时按下片段CI也想立即从后面的堆栈中删除B.请注意,在某些情况下我可能想要回到B但是在大多数情况下我想要清除C和B如果我打电话给popBackStack()两次或者我应该有某种委托机制通知B C已经关闭而且我们不希望显示B所以请清理。
答案 0 :(得分:1)
在片段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();
}
}