2013-07-19 4 views
43

Ich benutze die neue DrawerLayout mit Seitennavigation. Ich verwende die Schublade Symbol (das ‚Hamburger‘) wie folgt aus:Ändern Sie das Schubladensymbol zurück nach hinten Pfeil

@Override 
protected void onStart() { 
    super.onStart(); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_main_drawerlayout); 
    mDrawerToggle = new ActionBarDrawerToggle(
      this, 
      mDrawerLayout, 
      R.drawable.ic_navigation_drawer, 
      R.string.app_name, 
      R.string.app_name); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    getActionBar().setHomeButtonEnabled(true); 
} 

Allerdings, wenn ich einen Fragment zum Backstack hinzufügen, ich will wieder den Zurück-Pfeil angezeigt werden, so kann der Benutzer navigieren zurück zu "Home", und erst dann öffnen Sie die App-Schublade.

Wie kann ich das Schubladensymbol auf das Zurücksymbol zurücksetzen?
Der Pfeil Ich möchte:

Navigation Drawer

+1

meine Antwort hier Siehe http://stackoverflow.com/a/29292130/746347 – mixel

Antwort

71

die DrawerToggle „Hamburger“ deaktivieren und verstecken, rufen Sie einfach

mDrawerToggle.setDrawerIndicatorEnabled(false); 
+2

Große, das funktioniert, danke! – nhaarman

+3

Danke, können Sie auch sagen, wie Back-Aktion bei Klick nach mDrawerToggle.setDrawerIndicatorEnabled (false) zu implementieren? Ich versuche, zurück zum listview Fragment von Content Detail Fragment. S.: Ich kann mit der Zurück-Taste zum vorherigen Fragment gehen. – adnanyousafch

+2

@adnanyousafch http://stackoverflow.com/questions/17258020/switching-between-android-navigation-drawer-image-und-up-carat-when-using-fragme –

2

ich eine Schnittstelle für die Hosting-Aktivität geschaffen, um die Ansicht Zustand des aktualisieren Hamburgermenü. Für Fragmente auf oberster Ebene setze ich den Schalter auf true und für Fragmente, für die ich den Pfeil < anzeigen möchte, setze ich den Schalter auf false.

public class SomeFragment extends Fragment { 

    public interface OnFragmentInteractionListener { 
     public void showDrawerToggle(boolean showDrawerToggle); 
    } 

    private OnFragmentInteractionListener mListener; 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      this.mListener = (OnFragmentInteractionListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mListener.showDrawerToggle(false); 
    } 
} 

Dann in meiner Tätigkeit ...

public class MainActivity extends Activity implements SomeFragment.OnFragmentInteractionListener { 

    private ActionBarDrawerToggle mDrawerToggle; 

    public void showDrawerToggle(boolean showDrawerIndicator) { 
     mDrawerToggle.setDrawerIndicatorEnabled(showDrawerIndicator); 
    } 

} 
+1

Wie kann ich das "generisch" machen, also gilt es für viele Klassen wie 'SomeFragment'? Oder muss "MainActivity" jede einzeln implementieren? – IanB

+0

@IanB, ich denke, du solltest eine Klasse zum Beispiel BaseFragment erstellen, diesen Code implementieren und dann jedes Fragment erweitern, das du diese Schnittstelle mit Basisfragment verwenden willst – WardaLyn

Verwandte Themen