Usuń jeden konkretny fragment ze backstacka Androida
Do aplikacji na tablety z Androidem używam 2 fragmentów. Jeden po lewej stronie ekranu i jeden po prawej stronie. Po kliknięciu przycisku po prawej stronie zostanie dodany kolejny fragment na górze prawego fragmentu. Ten fragment jest dodawany do plecaka.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragmentlayout, fragment2);
ft.addToBackStack("Fragment2");
ft.commit();
Backstack jest teraz:
[fragment 1] -> [fragment 2]
Po lewej stronie znajduje się również przycisk, który otwiera fragment na górze lewego fragmentu (taki sam jak fragment2) i dodaje go do plecaka. Backstack jest teraz
[fragment 1] -> [fragment 2] -> [fragment 3]
Na fragmencie 2 znajduje się przycisk do zamknięcia tego fragmentu.
getFragmentManager().popBackStack("Fragment2", FragmentManager.POP_BACK_STACK_INCLUSIVE);
Problem polega na tym, że chcę tylko zamknąć [fragment 2], [fragment 3] również zostanie zniszczony. Mogę ręcznie usunąć fragment, dzwoniąc
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment2).commit();
Ale backstack pozostanie
[fragment 1] -> [(duch) fragment 2] -> [fragment 3]
Musisz więc cofnąć się jeszcze raz, aby zamknąć aplikację.
Czy istnieje sposób na usunięcie [fragmentu 2] z backstacku i pozostawienie [fragment 3] na ekranie?