<HOME
OptionsMenuを表示する
30分
アプリでメニューを表示するには、「OptionsMenu」や「ContextMenu」を使用します。
OptionsMenuは、MenuキーやMenuボタンを押すことで表示され、アプリ全般やActivity固有のメニューのために使われます。
(Windows等PCでいうところのツールバーのようなものです)
ContextMenuは、リンク等、Activity内のViewを長押しすることで表示され、その項目(View)固有のメニューのために使われます。
(Windows等PCでいうところの右クリックメニューのようなものです)
OptionsMenuの利用方法について学習します。
「OptionsMenuTraining」アプリを作成します。
Android Studioを起動し、新規プロジェクトを作成します。
「Welcome to Android Studio」画面の場合は、「Start a new Android Studio project」をクリックします。
別のプロジェクトが開いている場合は、ツールバーから「File」→「New」→「New Project...」をクリックします。
HelloWorldの時と同じようにプロジェクトを作成していきます。
アプリ名は「OptionsMenuTraining」としてください。
今回は「Backwards Compatibility (AppCompat)」のチェックは外しておきます。
Menuリソースを作成しましょう。
resフォルダを右クリック→「New」→「Android resource file」で、Menuリソースを作成します。
ファイル名は「options.xml」としておきましょう。
Menuリソースを追加していきましょう。
ソースコードから参照するためのIDと、タイトルを指定しましょう。
サンプル : options.xml
コードを表示するにはJavaScriptを有効にしてください
Designタブを選択すると、メニュー表示時のイメージを確認できます。
ソースコードにてMenuリソースをInflateして、Menuを表示させましょう。
MainActivityクラスで、「onCreateOptionsMenu」メソッドをオーバーライドします。
onCreateOptionsMenuは、OptionsMenuが生成される際のコールバックメソッドです。
onCreateOptionsMenuメソッドにて、ActivityのもつMenuInflaterを取得し、リソースファイルをinflateしてmenuオブジェクトへ追加します。
このActivityでOptionsMenuを使用したい場合は、onCreateOptionsMenuメソッドの戻り値をtrueにします。
コードを表示するにはJavaScriptを有効にしてください
サンプル : MainActivity.java
コードを表示するにはJavaScriptを有効にしてください
OptionsMenuを実行した際の処理を追加しましょう。
MainActivityクラスで、「onOptionsItemSelected」メソッドをオーバーライドします。
onOptionsItemSelectedメソッドは、メニューアイテムが選択された際のコールバックメソッドです。
onOptionsItemSelectedメソッドで、引数itemに応じて、メニューアイテムが選択された際の処理を実装します。
メニューアイテムが選択された際の処理を実行した場合は、onOptionsItemSelectedメソッドの戻り値をtrueにします。
コードを表示するにはJavaScriptを有効にしてください
サンプル : MainActivity.java
コードを表示するにはJavaScriptを有効にしてください
アプリを実行して動作を確認してみましょう。
条件によってメニューの表示内容を変更してみましょう。
OptionsMenu生成の際にはonCreateOptionsMenuメソッドがコールされますが、
OptionsMenuの表示時に呼ばれるコールバックは、「onPrepareOptionsMenu」です。
メニューを表示する場合はonCreateOptionsMenu同様、onPrepareOptionsMenuメソッドの戻り値をtrueにします。
なお、昔は画面上のMenuボタンではなくハードMENUキーでOptionsMenuを表示するのが一般的だったため、初回のOptionsMenu表示の際にonCreateOptionsMenuが呼ばれていました。
最近では、画面上のMenuボタン生成時にOptionsMenuの有無を知る必要があるため、Activity表示時にonCreateOptionsMenuが呼ばれるようになっています。
onPrepareOptionsMenuメソッドをオーバーライドして、メニュー表示時に、メニューアイテムの処理を変更してみましょう。
サンプル : MainActivity.java
コードを表示するにはJavaScriptを有効にしてください
アプリを実行して動作を確認してみましょう。
OptionsMenuに関する詳細については公式ドキュメントに記載されています。
APIガイド
Menu
MenuItem
また、Androidは先人たちがネット上にたくさんの情報を残してくれています。
これらも活用して、是非このAPIを有効に使えるようになってください。