2017-12-27 5 views
-1

Ich möchte den Navigationsdrainer schließen, nachdem der Schalter erneut gedrückt wurde. Gerade jetzt, es öffnet nur die Schublade, wenn der Schalter gedrückt wird. Ich kann die Schublade schließen, nachdem ein Gegenstand ausgewählt wurde.Schublade schließen nachdem Drawertoggle erneut gedrückt wird

Ist es möglich, in meine Methode zu implementieren, um die Schublade zu schließen?

, dass meine Methode ist:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     return true; 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       mDrawerLayout.openDrawer(GravityCompat.START); //THIS OPENS THE DRAWER 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    private void setupDrawerContent(NavigationView navigationView) { 
     navigationView.setNavigationItemSelectedListener(
       new NavigationView.OnNavigationItemSelectedListener() { 
        @Override 
        public boolean onNavigationItemSelected(MenuItem menuItem) { 
         menuItem.setChecked(true); 
         mDrawerLayout.closeDrawers();  //THIS CLOSES THE DRAWER; AFTER A ITEM IS SELECTED 
         return true; 
        } 
       }); 
    } 

Antwort

1

einfach, denke ich. Halten Sie einfach eine Spur davon, ob es offen oder nicht durch ein neues public boolean isDrawerOpen Mitglied Einführung

Lemme versuchen so etwas wie dieses

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      if (!isDrawerOpen) { 
       mDrawerLayout.openDrawer(GravityCompat.START); 
       isDrawerOpen = true; 
      } else { 
       mDrawerLayout.closeDrawers(); 
       isDrawerOpen = false; 
      } 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

private void setupDrawerContent(NavigationView navigationView) { 
    navigationView.setNavigationItemSelectedListener(
      new NavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(MenuItem menuItem) { 
        menuItem.setChecked(true); 
        mDrawerLayout.closeDrawers();  //THIS CLOSES THE DRAWER; AFTER A ITEM IS SELECTED 
        isDrawerOpen = false; 
        return true; 
       } 
      }); 
} 
+0

„isDrawerOpen“ ist nicht verfügbar:/ –

+0

, wie ich in der Post sagte selbst, 'durch Einführung eines neuen IsDrawerOpen Mitglied/Variable ' – Shark

+0

Ich verwendete "mdrawerLayout.isDrawerOpen (null)". Aber leider hat es nicht funktioniert –

Verwandte Themen