Navegação e backstack de fragmentos do Android

Eu tenho uma barra de cabeçalho (tipo como menu) e 4 fragmentos (MAIN, A, B, C) a partir do qual o principal deve ser 'principal / raiz' fragmento de backstack.

O problema que eu tenho é quando o usuário via menu vai, por exemplo, MAIN> A> B> C. Se eu simplesmente usar backstack ele vai na ordem inversa que eu não quero. Preciso de voltar botão para voltar a principal, não importa como o usuário navegou para um desses 3.

Meu código atual (que está errado, sai do aplicativo quando não está em MAIN e o fragmento atual é trocado de outro fragmento não-MAIN) é assim:

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;
}

questionAnswers(1)

yourAnswerToTheQuestion