2017-08-08 10 views
0

Androidドロワーオープンは一度しか動作しません。私はいくつかのアプローチを試みました。マイコード:Androidドロワーオープン1回のみ

public void openDrawer() { 
     ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close); 
     drawer.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.syncState(); 
     if(drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawers(); 
     } else { 
      drawer.openDrawer(GravityCompat.START); 
     } 
    } 

とアプローチ2:どちらの場合も

public void openDrawer() { 
    if(drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawers(); 
    } else { 
     drawer.openDrawer(GravityCompat.START); 
    } 
} 

はそれが開閉される初回のみ動作します。

EDIT 問題は、プレゼンターからメソッドを呼び出すことです。 ActivityのOnClickListenerにバインドすると動作しています。私はpreventDefaultのようなものが必要だろうと思う。

答えて

1

この方法で試してみてください。多くの場合、私のために働きます。

編集:onCreate()メソッドにこのパートを追加します。それを一度だけ呼んでください。

ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close); 
    drawer.setDrawerListener(mDrawerToggle); 
    mDrawerToggle.syncState(); 

カスタムボタンにクリックリスナーを設定します。

customButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (drawer.isDrawerOpen(navigationView)) { 
        closeDrawer(); 
       } else { 
        openDrawer(); 
       } 
      } 
     }); 

これらのヘルパーメソッド

public void openDrawer() { 
    drawer.openDrawer(GravityCompat.START); 
} 

public void closeDrawer() { 
    drawer.closeDrawer(GravityCompat.START); 
} 
+0

してくださいしている、あなたはツールバーを右使用している@TeodorKolev編集した答え – TeodorKolev

+0

を参照してください? –

+0

カスタムボタンがありません – TeodorKolev

関連する問題