我有一个活动,我正在使用以下方法切换片段:
public void setCurrentFragment(Fragment fragment) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.slide_left_right_in, R.anim.slide_left_right_out, R.anim.slide_right_left_in, R.anim.slide_right_left_out);
transaction.replace(R.id.contentFrameLayout, fragment, Integer.toString(fragmentId++));
transaction.addToBackStack(Integer.toString(fragmentId));
transaction.commit();
}
我的导航堆栈如下所示:
N-2 -> N-1 -> N
当某个片段 N 被“打开”时,我希望从 backstack 中删除前一个(N-1),所以当我按下“返回”时,我希望恢复 N-2 个片段。
当我在 N 片段中调用 FragmentManager.popBackStack(..) 时,它会删除 N 和 N-1 片段。
在切换到 N 片段之前,我曾尝试在 N-1 片段中调用 popBackStack(..)。但在这种情况下,N-2 个片段被恢复,并且只有在显示 N 个片段之后。
我的问题是:有没有办法从后台删除前一个片段而不弹出当前片段?