2017-12-27 10 views
-1

トグルをもう一度押すと、ナビゲーションドローダを閉じたいと考えています。今のところ、トグルが当たったらドロワを開くだけです。私は、アイテムが選択された後に引き出しを閉じることができます。Drawertoggleをもう一度押すとドロワを閉じる

引き出しを閉じるために自分のメソッドに実装することはできますか?

私の方法です:

@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; 
        } 
       }); 
    } 

答えて

1

簡単に私は推測します。ただ、

レムこの

@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」のような何かをしようと、それが開いているかいない新しいpublic boolean isDrawerOpenメンバーを導入することによって、のかどうかを追跡することはできません:/ –

+0

私はポスト自体に言ったように、 'で新しいisDrawerOpenメンバ/変数を導入する – Shark

+0

"mdrawerLayout.isDrawerOpen(null)"を使用しました。しかし悲しいことに、それはうまくいきませんでした –

関連する問題