2017-10-14 12 views
1

Dans mon application, MainActivity utilise un tiroir de navigation pour héberger plusieurs fragments. MainActivity fournit la barre d'outils et le contenu du fragment est affiché sous la barre d'outils dans une mise en page de cadre. Dans MainActivity, je commence mon premier fragment et initialise ma barre d'outils comme indiqué ci-dessous.Utilisez la barre d'outils Activité pour naviguer à partir du fragment

fragmentManager.beginTransaction().replace(R.id.content_frame, new FirstFragment()).commit(); 

toolbar = (Toolbar) findViewById(R.id.toolbar); 

setSupportActionBar(toolbar); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setTitle("Fragment 1"); 

Un de mes fragments nécessite un sous-fragment. Je voudrais ajouter un bouton de retour à ce sous-fragment, et remplacer onBackPressed() dans MainActivity.

Actuellement, ma barre d'outils affiche uniquement le hamburger à 3 lignes, qui, lorsqu'il est pressé, ouvre Navigation Drawer et affiche une liste de mes fragments. Je ne suis pas sûr comment montrer une flèche de retour dans mon sous-fragment au lieu d'un hamburger. Ensuite, je dois attraper l'événement onBackPressed() et le gérer. Je peux le faire de façon incorrecte, et pourrait utiliser des activités au lieu de fragments, mais si je le fais, je ne serai pas capable d'animer les transitions de fragment slide_in/slide_out. La barre d'outils glisserait avec la mise en page du cadre et je ne le veux pas.

Je voudrais que le contenu du fragment montre une transition, alors que la barre d'outils reste en place. Tout comme vous le feriez dans un View Pager.

J'apprécierais toutes les suggestions.

Merci!

Répondre

1

Vous pouvez changer votre icône « maison » appeler ces lignes:

getSupportActionBar().setHomeAsUpIndicator(R.drawable.your_arrow_icon); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Pour la manipulation de la « maison clic » doit l'emporter sur votre onOptionsItemSelected et gérer l'auditeur de clic pour la maison MenuItem (android.R.id .maison).

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == android.R.id.home) { 
      finish(); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 

    } 

Bonne chance!