2016-07-23 5 views
0

Ich habe erfolgreich eine Navigationsschublade eingerichtet, die das Schubladenlayout verwendet. Ich habe festgestellt, dass diese einfache Codezeile Entfernen des Hamburger Symbol auf eine Zurück-Taste ändert:Verwenden der DrawerLayout Zurück-Taste, um zur vorherigen Aktivität zurückzukehren

mDrawerToggle.syncState(); 

Allerdings, wenn ich die Zurück-Schaltfläche klicken, um es noch die Navigationsleiste öffnet, wenn ich in der Tat zum vorherigen zurückkehren möchten Aktivität.

Ich weiß, ich könnte einfach einen onClickListener setzen, aber ich dachte, Android hatte eine nativere Art der Navigation zum vorherigen Bildschirm. Hier ist mein Code:‘

onCreate:

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerToggle = new ActionBarDrawerToggle(
      this,     /* host Activity */ 
      mDrawerLayout,   /* DrawerLayout object */ 
      toolbar, /* nav drawer icon to replace 'Up' caret */ 
      R.string.drawer_open, /* "open drawer" description */ 
      R.string.drawer_close /* "close drawer" description */ 
    ) { 

     /** 
     * Called when a drawer has settled in a completely closed state. 
     */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      isOpen = false; 
     } 

     /** 
     * Called when a drawer has settled in a completely open state. 
     */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      isOpen = true; 
     } 
    }; 
    mDrawerLayout.addDrawerListener(mDrawerToggle); 

    mDrawerList = (ListView) findViewById(R.id.left_drawer); 
    ArrayList<String> drawerTitleArray = new ArrayList<>(); 
    drawerTitleArray.add(0, "TEST"); 
    drawerTitleArray.add(1, "TEST 1"); 
    // Set the adapter for the list view 
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.drawer_list_item, drawerTitleArray)); 

Sonstiges:

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
    return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item); 
} 


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

Antwort

1

In Ihrem onOptionsItemSelected() der Schublade Aktivität:

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
    if (item.getItemId() == android.R.id.home) { 
     super.onBackPressed(); 
     return true; 
    } 
    else 
     return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item); 
} 
+0

Ich glaube nicht, dies, da es funktioniert ist keine return-Anweisung in der "if" Teil der bedingten – tccpg288

+0

Richtig, ich habe meinen Code bearbeitet. "wahr", da wir das Ereignis konsumieren. – Shaishav

+0

Nicht die Lösung, es öffnet immer noch die Nav-Schublade – tccpg288