Fragmentos de navegación y backstack para Android.

Tengo una barra de encabezado (un poco como el menú) y 4 fragmentos (PRINCIPAL, A, B, C) de los cuales el PRINCIPAL debe ser el fragmento 'principal / raíz' para el backstack.

El problema que tengo es cuando el usuario a través del menú va, por ejemplo, PRINCIPAL> A> B> C. Si simplemente uso Backstack, irá en el orden inverso al que no quiero. Necesito el botón Atrás para volver a PRINCIPAL, sin importar cómo el usuario haya navegado a uno de esos 3.

Mi código actual (que es incorrecto, cierra la aplicación cuando no está en MAIN y el fragmento actual se cambia de otro fragmento que no es MAIN) se ve así:

private void SwitchFragment(Fragment pFragment)
{
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment);
    if (_CurrentFragment == _Frag_Main)
        ft.addToBackStack(null);
    ft.commit();

    _CurrentFragment = pFragment;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta