删除后栈中的多个片段

时间:2017-03-03 22:23:43

标签: android performance android-fragments

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

A-> B-&以及c

当我点击后面时按下片段CI也想立即从后面的堆栈中删除B.请注意,在某些情况下我可能想要回到B但是在大多数情况下我想要清除C和B如果我打电话给popBackStack()两次或者我应该有某种委托机制通知B C已经关闭而且我们不希望显示B所以请清理。

1 个答案:

答案 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(); 
    }
}