![[Android]ActionBarにボタン(メニュー)を設置する](https://www.yukiiworks.com/wp-content/uploads/2019/04/android.jpg)
はじめに
AndroidでActionBarにボタンを設置する方法をメモしておきます。
ActionBarに設置したボタンをタップするとメニューが下に出てくるものは調べるとたくさんあったのですがボタンを設置してタップした時に何かしらの処理をするようなコードがなかなか出てこなかったので。
イメージ

このようなボタンを追加していきます。
今回、ボタンイメージはAndroid内蔵の画像イメージを使用します。
リソースファイルの作成
画像の手順に従って新しいメニューのリソースファイルの作成をします。 (AndroidStudio2を使用しています。)
作成する場所はresディレクトリ配下、menuディレクトリの直下に作成します。
ここではmenu_main.xmlのファイル名で作成しました。

作成したリソースファイルに以下のタグを記述します。 ボタンが2つ以上欲しい場合Itemタグを適宜増やしてそれぞれ設定してください。
1 2 3 4 5 6 7 8 | <!--?xml version="1.0" encoding="utf-8"?--> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/addButton" android:icon="@android:drawable/ic_input_add" android:title="Add" app:showasaction="always"> </item> </menu> |
ソースコード
1 2 3 4 5 | @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } |
設置するアクティビティでonCreateOptionsMenuメソッドをオーバーライドします。 オーバーライドしたらgetMenuInflaterのinflateメソッドに先ほど作成したメニューのリソース(menu_main)を設定します。
アクティビティにボタンが設置できたら次はそのボタンに処理を追加します。
設置したボタンをタップした際の処理はonOptionsItemSelectedメソッドをオーバーライドして以下のように記述できます。
1 2 3 4 5 6 7 8 9 | @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.addButton: // ボタンをタップした際の処理を記述 break; } return true; } |
Switch文で引数のMenuItemのgetItemIdメソッド調べることでボタンを識別できます。 idはメニューのリソースを作成した時につけたidです。
ボタンを増やしたらcase文を追加していくだけで処理を分岐できます。

![[Swift3]画面の幅、高さを取得する(画面サイズ)](https://www.yukiiworks.com/wp-content/uploads/2019/04/swift-300x300.png)
![[Laravel]Formの配列をバリデーションでチェックする方法](https://www.yukiiworks.com/wp-content/uploads/2019/05/laravel-150x150.png)
![[iOS]Can’t end BackgroundTask: no background task exists with identifier 1 (0x1), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.エラーについて](https://www.yukiiworks.com/wp-content/uploads/2019/09/Xcode-150x150.png)

![[Python3]Enumで定義した値のリストを取得する](https://www.yukiiworks.com/wp-content/uploads/2019/11/python-logo-150x150.png)
![[Docker]起動済みのMySQLデータを永続化させる](https://www.yukiiworks.com/wp-content/uploads/2019/08/docker-logo-2-150x150.png)
![[Flutter]Navigatorで2つ前の画面に戻る方法](https://www.yukiiworks.com/wp-content/uploads/2020/08/flutter-150x150.png)
![[Android]java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/R$string;エラーについて](https://www.yukiiworks.com/wp-content/uploads/2019/10/android-studio-e1585186990750-150x150.jpg)

