2016-07-23 20 views
0

引き出しレイアウトを利用したナビゲーションドロワーを正常にセットアップしました。私は、コードのこの単純な行を削除すると、バックボタンにハンバーガーのアイコンを変更することを見出した。しかしDrawerLayout戻るボタンを使用して前のアクティビティに戻る

mDrawerToggle.syncState(); 

、私は以前に戻したいとき確かに私はそれはまだナビゲーションの引き出しを開いている[戻る]ボタンをクリックしたときアクティビティ。

私は単純にonClickListenerを設定することができますが、Androidは以前の画面にナビゲートするよりネイティブな方法があると考えました。ここに私のコードは次のとおりです。」

の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)); 

その他:引き出しの活動のあなたのonOptionsItemSelected()

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

答えて

1

@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

私は、これはのようにそこに動作するとは思いません条件文の "if"部分にreturn文がありません – tccpg288

+0

正解、私のコードを編集しました。私たちがイベントを消費しているので、「true」です。 – Shaishav

+0

解決策ではありませんが、引き続きnav drawerを開いています – tccpg288

関連する問題