6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DrawerToggleとToolbar(appCompat.v7)を組み合わせると、onOptionItemClick(id=android.R.id.home)が呼ばれない?

Last updated at Posted at 2015-05-17
AppCompatをv22.2.0くらいにあげると、

* ActionBarActivityはDeprecatedになっていたり
* NavigationViewというのがDesign Libraryにあったり

なので、この記事は若干古くなってしまっている可能性があります。

Slice 1.png

こんなかんじの画面遷移をつくろうとしたところ、

  • [←]のキーが出てくれない
  • [←]のキーは出たけれど、onItemClickが呼ばれない

などなど、ハマりどころがあったので、解決方法(になっているのかはわからないけど)メモ。

前提

左から2番めの画面で、左スワイプによるNavigationDrawerは有効にしたかったので、一番左の画面を継承する形で、作りました。
https://github.com/YusukeIwaki/ToolbarNavigationSample/blob/qiita-8fa427af2d2c0d23b46b/app/src/main/java/jp/co/crowdworks/toolbarnavigationsample/Main2Activity.java

(この方針がよろしくない、という可能性が非常に高いが)

解決コード

DrawerToggleでUpナビゲーションを有効にするには…
        mDrawerToggle.setDrawerIndicatorEnabled(false); //ハンバーガーアイコンは無効化
        mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
            // [←] をおした時のリスナーは手動で仕掛ける
            @Override
            public void onClick(View v) {
                Main2Activity.this.onBackPressed();
            }
        });
        getSupportActionBar().setDisplayHomeAsUpEnabled(true); // [←] アイコンを有効にする

補足

  • DrawerToggleを、 Toolbarをセットしない方のコンストラクタ で初期化すれば、onItemClick(android.R.id.home)は呼ばれる
  • 何らかの事情で、DrawerToggleを、Toolbarをセットする方のコンストラクタで初期化する場合は、上記のコードのように手動でリスナーを仕掛ける必要がありそう
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?