Excluir um fragmento específico do backstack do Android
Para um aplicativo de tablet Android eu uso 2 fragmentos. Um no lado esquerdo da tela e outro no lado direito. Quando você clica em um botão no fragmento direito, outro fragmento será adicionado na parte superior do fragmento direito. Este fragmento é adicionado ao backstack.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragmentlayout, fragment2);
ft.addToBackStack("Fragment2");
ft.commit();
O backstack é agora:
[fragmento 1] -> [fragmento 2]
No lado esquerdo, há também um botão que abre um fragmento no topo do fragmento esquerdo (igual ao fragmento 2) e o adiciona ao backstack. O backstack é agora
[fragmento 1] -> [fragmento 2] -> [fragmento 3]
No fragmento 2 é um botão para fechar esse fragmento.
getFragmentManager().popBackStack("Fragment2", FragmentManager.POP_BACK_STACK_INCLUSIVE);
O problema é quando eu só quero fechar [fragmento 2], [fragmento 3] também será destruído. Posso remover o fragmento manualmente chamando
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment2).commit();
Mas o backstack permanecerá
[fragmento 1] -> [fragmento (fantasma) 2] -> [fragmento 3]
Então você precisa pressionar mais uma vez para fechar o aplicativo.
Existe uma maneira de remover apenas [fragmento 2] do backstack e deixar o [fragmento 3] na tela?