オプションメニューは、アプリ画面の上部にある「アクションバー」をタッチすると表示されるメニューです。

このようにボタンを押すとメニューを表示し、選択すると処理を実行するプログラムを作成したいと思います。
①「Values」フォルダの「strings.xml」を開きます。
②ソースコードは以下のように編集します。オプションメニューボタンをクリックすると表示されるようアイテムを設定します。
<resources>
<string name="app_name">AndroidMenuTest</string>
<string name="menu_item1">アイテム1</string>
<string name="menu_item2">アイテム2</string>
<string name="menu_item3">アイテム3</string>
<string name="menu_item4">アイテム4</string>
<string name="menu_item5">アイテム5</string>
<string name="menu_item6">アイテム6</string>
<resources>
③次は、オプションメニューのレイアウトを作成しようと思います。activity_main.xmlに作成してもよいが、別ファイルで管理します。「res」フォルダ上で右クリックし、「Android Resource Directory」をクリックします。ここで「menu」フォルダを作成し、「main.xml」ファイルを作成します。
④以下の画面が表示されたので、「Resource Type」を「menu」に変更して「OK」をクリックします。
⑤作成した「menu」フォルダ上で右クリックし、「file」をクリックします。
⑥開いた「New File」でファイル名を入力します。main.xmlというXMLファイルを作成します。
⑦作成したmain.xmlにオプションメニューのレイアウトを作成します。ソースコードを以下のように記述します。menuタグは、オプションメニューを表示するための要素であり、1つ以上のitemタグを保持します。
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.androidmenutest.app.MainActivity" > </menu>
⑧menuタグ内にitemタグを追加します。item要素はメニューアイテムを表示するための要素です。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.androidmenutest.app.MainActivity" >
<item
android:id="@+id/item1" //プログラムからアクセスする為にidを設定
android:title="@string/menu_item1" //strings.xmlで設定したアイテム名を表示
android:orderInCategory="100" //指定した値の順番でアイテムを表示
app:showAsAction="never" /> //メニューボタンクリック時にアイテムを表示
<item
android:id="@+id/item2"
android:title="@string/menu_item2"
android:orderInCategory="200"
app:showAsAction="never" />
<item
android:id="@+id/item3"
android:title="@string/menu_item3"
android:orderInCategory="300"
app:showAsAction="never" />
<item
android:id="@+id/item4"
android:title="@string/menu_item4"
android:orderInCategory="400"
app:showAsAction="never" />
<item
android:id="@+id/item5"
android:title="@string/menu_item5"
android:orderInCategory="500"
app:showAsAction="never" />
<item
android:id="@+id/item6"
android:title="@string/menu_item6"
android:orderInCategory="600"
app:showAsAction="never" />
</menu>
⑨レイアウトが作成できましたので、MainActivity.javaに処理を記述していきます。onCreateOptionsMenu()メソッドをオーバーライドすることで、オプションメニューボタンを表示します。Menu型が引数として渡されます。MenuInflaterクラスのインスタンスを取得し、getMenuInflater()というメソッドを使うことで、main.xmlの内容を読み込んで、メニューに反映させます。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//main.xmlの内容を読み込む
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
⑩次に、アイテムが選択されたときの処理を記述します。onOptionsItemSelected()メソッドをオーバーライドすることにより、アイテムが選択された時にこのメソッドが呼び出されます。引数としてMenuItemが渡され、選択したメニューアイテムを受け取ります。getItemId()メソッドは、この場合、選択されたメニューアイテムのidを取得します。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
TextView varTextView = (TextView) findViewById(R.id.textView);
switch (item.getItemId()) {
case R.id.item1:
varTextView.setText(R.string.menu_item1);
return true;
}
return super.onOptionsItemSelected(item);
}
⑪出来上がったMainActivity.javaのソースコードになります。
package com.example.user.androidmenutest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// アクションバーを表示するメソッド
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
// オプションメニューのアイテムが選択されたときに呼び出されるメソッド
@Override
public boolean onOptionsItemSelected(MenuItem item) {
TextView varTextView = (TextView) findViewById(R.id.textView);
switch (item.getItemId()) {
case R.id.item1:
varTextView.setText(R.string.menu_item1);
return true;
case R.id.item2:
varTextView.setText(R.string.menu_item2);
return true;
case R.id.item3:
varTextView.setText(R.string.menu_item3);
return true;
case R.id.item4:
varTextView.setText(R.string.menu_item4);
return true;
case R.id.item5:
varTextView.setText(R.string.menu_item5);
return true;
case R.id.item6:
varTextView.setText(R.string.menu_item6);
return true;
}
return super.onOptionsItemSelected(item);
}
}
⑫できたプログラムを実行してみます。
無事、オプションメニューが実装できました。アイテムを選択することで、各画面に遷移するというように使っていきたいですね。








