De retour de la navigation avec des Fragments / Barre d'outils

Je suis de me gratter la tête avec ce un maintenant.... J'ai un ActionBarActivity qui charge une première Fragment - le menu d'origine est gonflé à l'intérieur de l'activité. Maintenant, j'ai une barre de navigation que, lorsqu'un élément est sélectionné, les temps de chargements un autre fragment et l'ajoute à la backstack.

Quand je fais cela, il ya un couple de choses que je veux mettre:

  1. Ensemble de la maison jusqu'indicateur
  2. Invalider le menu d'options à partir de l'activité principale
  3. Ensemble a des options de vrai pour le Fragment
  4. De s'assurer que l'indicateur correctement revient en arrière à l'original Fragment

Quelque chose de très étrange se passe sur la place de l'indicateur apparaît qu'une seule fois et ne se comporte pas comme le bouton de retour, et bien que j'ai invalidé et gonflé d'un nouveau menu, le menu nouveau obtient ajouté à l'origine de l'Activité de menu.

EDIT: Ok j'ai résolu l'ajout de question - avez oublié d'ajouter menu.clear() dans le onCreateOptionsMenu méthode.

Ma navigation tiroir de mise en page onClick méthodes pour tous les éléments de menu qui allait déclencher la charge d'un autre Fragment:

public void navItemClick(View view) {

        switch (view.getId()) {
            case R.id.ripSMS:
                mNavigationDrawer.toggleHome(false);
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                FragmentTransaction mTrans = getSupportFragmentManager().beginTransaction();
                mTrans.replace(R.id.voiceover_frame_layout,new MessageFragment(),"main_ui")
                        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack("msg").commit();
                break;
            case R.id.ripEmail:
                break;
            case R.id.ripSettings:
                break;
        }

        mNavigationDrawer.closeDrawer();
    }

toggleHome:

public void toggleHome(boolean show) {
        mDrawerToggle.setDrawerIndicatorEnabled(show);

        if (!show) {
            mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        } else {
            mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        }
    }

Une fois que l'article est déclenché le onCreate contient les invalider et la hasOptions code:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActivity().invalidateOptionsMenu();
    setHasOptionsMenu(true);
}

La onCreateOptionsMenu de gonfler un autre menu mise en page (contient un seul élément appelé les paramètres).

Comme mentionné, ce que partiellement fonctionne une fois - la première fois que j'utilise l'élément à charger le Fragment, j'ai l'icône de retour en arrière, mais c'est aussi ne fonctionne pas (ce qui est défini dans onOptionsItemSelected de vérifier pour la maison point de presse qu'il ne fait rien). Lorsque j'appuie sur le bouton de retour, il me ramène à la bonne place. Si je navigue en arrière cependant, la flèche de retour maintenant plus de montre, même si le code s'exécute par le biais de onCreate!

InformationsquelleAutor Hamz4h_ | 2015-03-08