Для приложения планшета Android я использую 2 фрагмента. Один на левой стороне экрана и один на правой стороне. Когда вы нажимаете кнопку на правом фрагменте, в верхней части правого фрагмента добавляется еще один фрагмент. Этот фрагмент добавляется в заднюю часть.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragmentlayout, fragment2);
ft.addToBackStack("Fragment2");
ft.commit();
Теперь у задней стопы:
[фрагмент 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();
Но backstack останется
[фрагмент 1] → [(призрак) фрагмент 2] → [фрагмент 3]
Итак, вам нужно нажать еще один раз, чтобы закрыть приложение.
Есть ли способ удалить [фрагмент 2] из задней части экрана и оставить [фрагмент 3] на экране?