Es esta la forma correcta de limpiar la pila de fragmentos al dejar una pila profundamente anidada?

Estoy usando la biblioteca de compatibilidad de Android para implementar fragmentos y he ampliado la muestra de diseño para que un fragmento contenga un botón que dispare otro fragmento.

En el panel de selección de la izquierda tengo 5 elementos seleccionables:A B C D E.

Cada carga un fragmento (a través deFragmentTransaction:replace) en el panel de detalles -a b c d e

Ahora he extendido el fragmentoe para contener un botón que carga otro fragmentoe1 también en el panel de detalles. He hecho esto en el fragmentoeétodo onClick de @ de la siguiente manera:

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.details_frag, newFrag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();

Si hago las siguientes selecciones:

E - e - e1 - D - E

Entonces fragmentoe está en el panel de detalles. Esto está bien y lo que quiero. Sin embargo, si golpeo laback en este punto no hace nada. Tengo que hacer clic dos veces porquee1 todavía está en la pila. Además, después de hacer clic, obtuve una excepción de puntero nulo en onCreateView:

Para 'resolver' este problema, agregué lo siguiente siempre queA B C D E está seleccionado:

FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
    fm.popBackStack();
}

¿Solo se pregunta si esta es la solución correcta o si debería estar haciendo algo diferente?

Respuestas a la pregunta(6)

Su respuesta a la pregunta