У меня есть действие, в котором я переключаю фрагменты, используя следующий метод:
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 «открыт», я хочу, чтобы предыдущий (N-1) был удален из backstack, поэтому, когда я нажимаю «назад», я хочу, чтобы фрагмент N-2 был восстановлен.
Когда я вызываю FragmentManager.popBackStack (..) в фрагменте N, он удаляет фрагмент N и N-1.
Я попытался вызвать popBackStack (..) во фрагменте N-1 прямо перед переключением на фрагмент N. Но в этом случае возобновляется N-2 фрагмент, и только после этого отображается N фрагмент.
Мой вопрос: есть ли способ удалить предыдущий фрагмент из backstack, не выталкивая текущий фрагмент?