Удалить один конкретный фрагмент из бэкстека Android
Для приложения на планшете Android я использую 2 фрагмента. Один на левой стороне экрана и один на правой стороне. Если вы нажмете кнопку в правом фрагменте, другой фрагмент будет добавлен вверху правого фрагмента. Этот фрагмент добавлен в backstack.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragmentlayout, fragment2);
ft.addToBackStack("Fragment2");
ft.commit();
Backstack теперь:
[фрагмент 1] -> [фрагмент 2]
На левой стороне также есть кнопка, которая открывает фрагмент поверх левого фрагмента (такой же, как фрагмент2) и добавляет его в backstack. Бэкстек сейчас
[фрагмент 1] -> [фрагмент 2] -> [фрагмент 3]
На фрагменте 2 есть кнопка, чтобы закрыть этот фрагмент.
getFragmentManager().popBackStack("Fragment2", FragmentManager.POP_BACK_STACK_INCLUSIVE);
Проблема в том, что когда я хочу закрыть только [фрагмент 2], [фрагмент 3] также будет уничтожен. Я могу удалить фрагмент вручную, позвонив
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment2).commit();
Но бэкстек останется
[фрагмент 1] -> [(призрачный) фрагмент 2] -> [фрагмент 3]
Так что вам нужно нажать еще раз, чтобы закрыть приложение.
Есть ли способ удалить только [фрагмент 2] из backstack и оставить [фрагмент 3] на экране?