For a android tablet application I use 2 fragments. One on the left side on the screen and one on the right side. When you click on a button at the right fragment, another fragment wil be added on the top of the right fragment. This fragment is added to the backstack.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragmentlayout, fragment2);
ft.addToBackStack("Fragment2");
ft.commit();
The backstack is now:
[fragment 1] -> [fragment 2]
On the left side is also a button that opens a fragment on top of the left fragment (same as fragment2) and adds it to the backstack. The backstack is now
[fragment 1] -> [fragment 2] -> [fragment 3]
On fragment 2 is a button to close that fragment.
getFragmentManager().popBackStack("Fragment2", FragmentManager.POP_BACK_STACK_INCLUSIVE);
The problem is when I only want to close [fragment 2], [fragment 3] will also be destroyed. I can remove the fragment manualy by calling
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment2).commit();
But the backstack will remain
[fragment 1] -> [(ghost) fragment 2] -> [fragment 3]
So you need to press back one time more to close the application.
Is there a way to only remove [fragment 2] from the backstack and leave [fragment 3] on the screen?