「Up Navigation を実装するには」の版間の差分
提供: tknotebook
								
												
				 (→追記)  | 
				 (→追記)  | 
				||
| (1人の利用者による、間の5版が非表示) | |||
| 3行: | 3行: | ||
| − | Up Navigation   | + | Up Navigation とは下の画面例のように、アクションバーの左端に矢印が表示され、それを押すと親のアクティビティに戻る動作のことです。  | 
| + | '''「戻る」''' との違いは、直前のアクティビティに戻るのではなく、指定されたアクティビティに戻るということです。  | ||
[[ファイル:UpNavigation.png]]  | [[ファイル:UpNavigation.png]]  | ||
| 17行: | 18行: | ||
とすればOKです。  | とすればOKです。  | ||
| − | ==Up Navigation の   | + | ==Up Navigation の イベントを処理する==  | 
Up Navigation の矢印をタッチすると、アクティビティの onOptionsItemSelected メソッドが呼ばれるので、以下のように処理します。  | Up Navigation の矢印をタッチすると、アクティビティの onOptionsItemSelected メソッドが呼ばれるので、以下のように処理します。  | ||
| 33行: | 34行: | ||
==マニフェストを変更する==  | ==マニフェストを変更する==  | ||
| + | 上記のコード  | ||
  NavUtils.navigateUpFromSameTask(this);  |   NavUtils.navigateUpFromSameTask(this);  | ||
| 43行: | 45行: | ||
上記はメインアクティビティに戻るための記述ですが、戻り先は任意のアクティビティで大丈夫です。  | 上記はメインアクティビティに戻るための記述ですが、戻り先は任意のアクティビティで大丈夫です。  | ||
| + | |||
| + | 尚、この属性は API16(Jelly Beans) からでないと使えません。  | ||
==追記==  | ==追記==  | ||
| − | + | AndroidStudio 1.14.0 以降では 従来のアクションバーの代わり ツールバーが使われるようになりました。  | |
しかし、コード  | しかし、コード  | ||
2016年3月18日 (金) 01:23時点における最新版
メインページ>コンピュータの部屋#Android>Android Tips
Up Navigation とは下の画面例のように、アクションバーの左端に矢印が表示され、それを押すと親のアクティビティに戻る動作のことです。
「戻る」 との違いは、直前のアクティビティに戻るのではなく、指定されたアクティビティに戻るということです。
これを実現するには3つの処理が必要です。
Up Navigation の矢印を表示するには、アクティビティの onCreate メソッドなどで
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
とすればOKです。
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"
上記はメインアクティビティに戻るための記述ですが、戻り先は任意のアクティビティで大丈夫です。
尚、この属性は API16(Jelly Beans) からでないと使えません。
追記
AndroidStudio 1.14.0 以降では 従来のアクションバーの代わり ツールバーが使われるようになりました。
しかし、コード
setSupportActionBar(toolbar);
でツールバーを従来のアクションバーと同様に扱うことができます。
