0

Ich habe versucht, eine Navigationsleiste für eine vorhandene App zu erstellen. Ich habe ein paar Tutorials dafür gefunden, aber die meisten davon (einschließlich der official Android guide) scheinen für die v4 ActionBarDrawerToggle-Bibliothek zu sein, die veraltet ist. Ich versuche stattdessen, die v7 Bibliothek zu verwenden, aber mein ActionBarDrawerToggle scheint nicht zu tun, was die documentation sagt, es sollte tun.Navigationsleiste Hamburger-Symbol wird nicht mit v7 angezeigt ActionBarDrawerToggle

Bearbeiten: Modifiziert meinen Code wie in der Antwort unten. Das Hamburger-Symbol wird nun richtig hin und her geschaltet, aber wenn der Benutzer auf die Hardware-Zurück-Taste klickt, um zum Hauptteil meiner App zurückzukehren, verschwindet das Hamburger-Symbol vollständig. Warum passiert das?

private void addDrawerItems() { 
    String[] itemArray = {"About", "Nearby", "Settings", "Feedback",}; 
    mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, itemArray); 
    mDrawerList.setAdapter(mAdapter); 
    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Log.d("ContributionsActivity", "Item " + position + " selected"); 
     } 
    }); 
} 

private void setupDrawer() { 
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 

    mDrawerToggle.setDrawerIndicatorEnabled(true); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTitle(R.string.title_activity_contributions); 
    setContentView(R.layout.activity_contributions); 

    //Set up navigation drawer 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setHomeButtonEnabled(true); 
    mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView)findViewById(R.id.drawer_list); 
    addDrawerItems(); 
    setupDrawer(); 
    ... 
    } 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // enabling drawer toggle by clicking on the app icon. 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } else { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       if (mediaDetails.isVisible()) { 
        getSupportFragmentManager().popBackStack(); 
       } 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    // Sync the toggle state after onRestoreInstanceState has occurred. 
    mDrawerToggle.syncState(); 
} 
+1

versuchen Sie diese Ref: http: //stackoverflow.com/questions/26754940/appcompatv7-v21-navigation-drawer-not-showing-hamburger-icon? Rq = 1 –

Antwort

1
@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    // Sync the toggle state after onRestoreInstanceState has occurred. 
    mDrawerToggle.syncState(); 
} 

Sie fehlende Synchronisationszustand, fügen Sie es und alles sollte in Ordnung sein.

+0

Oh, wow, danke! Will Antwort annehmen, wenn die minimale Zeit mir erlaubt :) – misaochan

+0

Oh, ähm, ein anderes Problem jetzt - wenn der Benutzer an irgendeinem Punkt auf den Hardware-Zurück-Knopf klopft und zurück zum Hauptfragment geht, verschwindet das Hamburger-Symbol. Warum passiert das? – misaochan

+1

Es kann sich um einen spezifischen Fall handeln, der Ihrer Aktivität entspricht/fragment hierarchy. Versuchen Sie Lösungen in diesem Link: http://stackoverflow.com/questions/17258020/switching-between-android-navigation-drawer-image-and-up-caret-when-using-fragme?rq=1 mDrawerToggle.setDrawerIndicatorEnabled (falsch); ? – Klawikowski

Verwandte Themen