Navigation tiroir, la manipulation de la touche retour pour revenir au fragments?

Je suis en utilisant le construit dans le tiroir de navigation pour exécuter mon application. Je n'arrive pas à comprendre comment gérer le bouton retour. Quand il est pressé, je veux qu'il charge le premier fragment de nouveau. Fragment1.

Ainsi, lorsque l'application démarre, vous voyez Fragment1 lancé. Ils peuvent ensuite cliquez sur Fragment de 2-5 à aller vers les autres pages. Dans toutes ces pages je veux que le bouton retour pour ramener l'utilisateur à Fragment1. Le seul endroit où l'utilisateur doit être en mesure de quitter l'application via le bouton retour est Fragment1.

Puisque tout est géré par un FragmentActivity j'ai essayé de jouer avec le bouton retour de là. Je reçois une force de fermeture erreur cependant:

(01-11 14:09:33.114: E/AndroidRuntime(8292): android.view.InflateException: Binary XML file line #7: Error inflating class fragment)

C'est ce que j'ai à ce jour:

J'ai fait en sorte d'ajouter les fragments de la pile de retour comme ceci:

fm.beginTransaction().replace(R.id.main, newFragment).addToBackStack("fragBack").commit();

Bouton retour:

@Override
public void onBackPressed() {
    if (getSupportFragmentManager().findFragmentByTag("fragBack") != null) {

    }
    else {
        super.onBackPressed();
        return;
    }
    if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
        Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_LONG).show();
        Fragment frag = getSupportFragmentManager().findFragmentByTag("fragBack");
        FragmentTransaction transac = getSupportFragmentManager().beginTransaction().remove(frag);
                transac.commit();
    }

}

Personne ne sait ce que je dois faire? Dois-je appeler onBackPressed dans chaque fragment (si c'est encore possible) plutôt que de la FragmentActivity qui contrôle le tiroir? Dans mon passé des applications que j'ai été correct avec le bouton retour de la fermeture de l'application, indépendamment de qui fragmentent l'utilisateur est sur mais la je suis en train de faire maintenant, je veux que le bouton de retour pour revenir à Fragment1.

Voudrais vraiment l'apprécier un peu d'aide, je vous remercie.

onItemClick

@Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            Fragment newFragment = new MapsPage();
            FragmentManager fm = getSupportFragmentManager();
            switch(i) {
            case 0:
                newFragment = new Fragment2();
                break;
            case 1:
                newFragment = new Fragment3();
                break;
            case 2:
                newFragment = new Fragment4();
                break;
            case 3:
                newFragment = new Fragment5();
                break;
            }
            fm.beginTransaction().add(R.id.main, newFragment).addToBackStack("fragback").commit();
            drawerLayout.closeDrawer(rl);
        }
  • il devrait fonctionner sans ajout de code pour onBackkeypressed. l'erreur que vous obtenez liées à la mise en page vous pouvez poster votre disposition ainsi?
  • Vraiment? Dans tous mes de Navigation de tiroirs, le bouton de retour, toujours issues de l'application. Indépendamment de ce Fragment de l'utilisateur a choisi d'aller sur. J'ai personnalisé addons pour ma mise en page, mais c'est un standard de mise en page, je ne pense pas que mon problème mais je vais le poster.
  • Vous devez utiliser la méthode addToBackStack() dans votre FragmentTrasaction avant de vous engager (ce que vous faites). Vous n'avez pas besoin d'en faire plus que cela pour le bouton retour pour revenir au fragment précédent
  • Aussi vipul'est droit, l'erreur que vous ayez un problème avec votre fichier de mise en page
  • Oui tout simplement ajouter Fragment1 à backstack avant de s'engager et de n'importe quel fragment de l'utilisateur, en appuyant sur le bouton retour lui Fragment1. Aussi assurez-vous de ne pas ajouter d'autres Fragments de backstack
  • vérifier mon sna vous avez besoin d'appeler "ajouter" au lieu de remplacer
  • J'ai juste commenté mon onBackPressed et j'ai un force close d'erreur lorsque vous appuyez sur le bouton retour. même Exception que dans ma question.
  • Comment pourrais-je aller sur le faire? J'ai beaucoup de fragments et le Fragment de la transaction n'arrive qu'à la fin. addToBackStack ne me permet pas de spécifier une classe.
  • double possible de Comment reprendre un Fragment de la BackStack si existe

InformationsquelleAutor RED_ | 2014-01-13