Gestion de la presse arrière lors de l'utilisation de fragments dans Android

Je suis en utilisant Android Coulissantes Menu de Navigation à l'aide de Tiroir dans mon application et les Fragments sont utilisés dans l'application au lieu de des Activités.
Quand j'ai ouvert le tiroir, cliquez sur un élément, un Fragment apparaît. Je me déplace d'un fragment à un autre fragment en utilisant le code suivant:

Fragment fragment = null;
fragment = new GalleryFragment(selectetdMainMenu.getCategoryID());
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    ft.addToBackStack("menuFrag");
                    ft.add(R.id.frame_container, fragment, "menuFrag");
                    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                    ft.commit();

De cette façon, je peux aller d'un fragment à l'autre, mais je n'arrive pas à venir à le fragment précédent sur le dos sur le bouton. J'ai réussi à venir avec ce code à nouveau la poignée de la presse dans MainActivity où Tiroir est Initialisé:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode, event);
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Fragment fragment_byTag = fragmentManager.findFragmentByTag("menuFrag");
        Fragment menuFragment_by_tag = fragmentManager.findFragmentByTag("galleryFrag");
        Fragment commentsFrag_by_tag = fragmentManager.findFragmentByTag("commentsFrag");
        Fragment dealDetail = fragmentManager.findFragmentByTag("promoFrag");
            if(commentsFrag_by_tag != null){
                if (commentsFrag_by_tag.isVisible()) {
                    Log.e("comments back  ", " clicked");
                    //menuDetailsFrag.onBackPressed();
                    FragmentManager fragmentManager = getSupportFragmentManager();
                    fragmentManager.beginTransaction().remove(commentsFrag_by_tag).commit();
                    fragmentManager.beginTransaction().show(menuFragment_by_tag).commit();
                }
            }else if(menuFragment_by_tag.isVisible()){
                Log.e("menu back  ", " clicked");
                menuDetailsFrag.onBackPressed();
                FragmentManager fragmentManager = getSupportFragmentManager();
                fragmentManager.beginTransaction().remove(menuFragment_by_tag).commit();
                fragmentManager.beginTransaction().show(fragment_byTag).commit();
            }
        }



    return false;
}

Cela fonctionne parfois, mais échoue la plupart du temps. Je serais très reconnaissant si une meilleure façon de naviguer dans le dossier peuvent être affichés.

source d'informationauteur TharakaNirmana