Zurück navigation mit Fragmenten / Toolbar

Bin ich meinen Kopf kratzen mit diesem ein nun.... Ich habe eine ActionBarActivity lädt, die eine erste Fragment - das original-Menü wird aufgeblasen innerhalb der Aktivität. Nun, ich habe eine Navigations-bar, dass, wenn ein Element ausgewählt ist, lädt ein anderes fragment und fügt diese zu den backstack.

Wenn ich dies mache, gibt es ein paar Dinge, die ich einstellen will:

  1. Das Haus als Kennzeichen
  2. Verfall der Optionen-Menü von der Haupt-Tätigkeit
  3. Gesetzt hat Optionen auf true für das Fragment
  4. Sicherzustellen, dass die Kennzeichen korrekt navigiert zurück zum ursprünglichen Fragment

Etwas ziemlich seltsames passiert auf der up-Anzeige erscheint nur einmal und nicht so Verhalten, wie die Taste zurück, und zwar hab ich entwertet und aufgeblasen, ein neues Menü, das Menü neu wird angehängt, um die ursprüngliche Aktivität-Menü.

EDIT: Ok hab ich behoben das Anhängen von Problem - habe vergessen hinzuzufügen menu.clear() im onCreateOptionsMenu Methode.

Meine navigation drawer-layout hat onClick Methoden, um alle Menüpunkte, die auslösen würde, die den laden von einem anderen 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);
        }
    }

Sobald das Element ausgelöst wird, wird der onCreate enthält das erlöschen und die hasOptions code:

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

Den onCreateOptionsMenu dann bläst ein weiteres Menü layout (enthält ein einzelnes Element namens Einstellungen).

Wie bereits erwähnt, ist dies nur teilweise funktioniert, einmal - das erste mal, dass ich mit der item-laden das Fragment, bekomme ich das Symbol zurück, aber es ist auch nicht zu arbeiten (dies ist in onOptionsItemSelected check für zu Hause Element drücken - es tut sich nichts). Wenn ich drücken Sie die zurück-Taste bringt mich zurück zu der richtigen Stelle. Wenn ich Sie jedoch wieder, die "zurück" - Pfeil jetzt mehr zeigt, obwohl der code läuft durch onCreate!

InformationsquelleAutor Hamz4h_ | 2015-03-08

Schreibe einen Kommentar