Up Navigation を実装するには

提供: tknotebook
2015年10月11日 (日) 09:48時点におけるNakamuri (トーク | 投稿記録)による版

移動: 案内検索

メインページ>コンピュータの部屋#Android>Android Tips


Up Navigation とは今の画面例のように、アクションバーの左端に矢印が表示され、それを押すと親のアクティビティに戻る動作のことです。 「戻る」 との違いは、直前のアクティビティに戻るのではなく、指定されたアクティビティに戻るということです。

UpNavigation.png

これを実現するには3つの処理が必要です。

Up Navigation の矢印を表示する

Up Navigation の矢印を表示するには、アクティビティの onCreate メソッドなどで

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

とすればOKです。

==Up Navigation の イベントを処理する。

Up Navigation の矢印をタッチすると、アクティビティの onOptionsItemSelected メソッドが呼ばれるので、以下のように処理します。

   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
           // Respond to the action bar's Up/Home button
           case android.R.id.home:
               NavUtils.navigateUpFromSameTask(this);
               return true;
       }
       return super.onOptionsItemSelected(item);
   }

マニフェストを変更する

NavUtils.navigateUpFromSameTask(this);

はマニフェストにアクティビティの親アクティビティ(戻り先)を記述しないと落ちます。

マニフェストのアクティビティの記述に以下の行を加えます。

android:parentActivityName=".MainActivity"

上記はメインアクティビティに戻るための記述ですが、戻り先は任意のアクティビティで大丈夫です。

追記

Android 1.14.0 以降では 従来のアクションバーに代わり ツールバーが使われるようになりました。

しかし、コード

setSupportActionBar(toolbar);

でツールバーを従来のアクションバーと同様に扱うことができます。