<HOME

OptionsMenuを表示する30分


アプリでメニューを表示するには、「OptionsMenu」や「ContextMenu」を使用します。


OptionsMenuは、MenuキーやMenuボタンを押すことで表示され、アプリ全般やActivity固有のメニューのために使われます。

(Windows等PCでいうところのツールバーのようなものです)

ContextMenuは、リンク等、Activity内のViewを長押しすることで表示され、その項目(View)固有のメニューのために使われます。

(Windows等PCでいうところの右クリックメニューのようなものです)


OptionsMenuの利用方法について学習します。

  1. 「OptionsMenuTraining」アプリを作成します。

    1. Android Studioを起動し、新規プロジェクトを作成します。

      「Welcome to Android Studio」画面の場合は、「Start a new Android Studio project」をクリックします。

      別のプロジェクトが開いている場合は、ツールバーから「File」→「New」→「New Project...」をクリックします。

    2. HelloWorldの時と同じようにプロジェクトを作成していきます。

      アプリ名は「OptionsMenuTraining」としてください。

      今回は「Backwards Compatibility (AppCompat)」のチェックは外しておきます。

  2. Menuリソースを作成しましょう。

    1. resフォルダを右クリック→「New」→「Android resource file」で、Menuリソースを作成します。

      ファイル名は「options.xml」としておきましょう。

    2. Menuリソースを追加していきましょう。

      ソースコードから参照するためのIDと、タイトルを指定しましょう。

      サンプル : options.xml

      コードを表示するにはJavaScriptを有効にしてください

    3. Designタブを選択すると、メニュー表示時のイメージを確認できます。

  3. ソースコードにてMenuリソースをInflateして、Menuを表示させましょう。

    1. MainActivityクラスで、「onCreateOptionsMenu」メソッドをオーバーライドします。

      onCreateOptionsMenuは、OptionsMenuが生成される際のコールバックメソッドです。

      onCreateOptionsMenuメソッドにて、ActivityのもつMenuInflaterを取得し、リソースファイルをinflateしてmenuオブジェクトへ追加します。

      このActivityでOptionsMenuを使用したい場合は、onCreateOptionsMenuメソッドの戻り値をtrueにします。

      コードを表示するにはJavaScriptを有効にしてください

      サンプル : MainActivity.java

      コードを表示するにはJavaScriptを有効にしてください

  4. OptionsMenuを実行した際の処理を追加しましょう。

    1. MainActivityクラスで、「onOptionsItemSelected」メソッドをオーバーライドします。

      onOptionsItemSelectedメソッドは、メニューアイテムが選択された際のコールバックメソッドです。

      onOptionsItemSelectedメソッドで、引数itemに応じて、メニューアイテムが選択された際の処理を実装します。

      メニューアイテムが選択された際の処理を実行した場合は、onOptionsItemSelectedメソッドの戻り値をtrueにします。

      コードを表示するにはJavaScriptを有効にしてください

      サンプル : MainActivity.java

      コードを表示するにはJavaScriptを有効にしてください

  5. アプリを実行して動作を確認してみましょう。

  6. 条件によってメニューの表示内容を変更してみましょう。

    1. OptionsMenu生成の際にはonCreateOptionsMenuメソッドがコールされますが、

      OptionsMenuの表示時に呼ばれるコールバックは、「onPrepareOptionsMenu」です。

      メニューを表示する場合はonCreateOptionsMenu同様、onPrepareOptionsMenuメソッドの戻り値をtrueにします。

      なお、昔は画面上のMenuボタンではなくハードMENUキーでOptionsMenuを表示するのが一般的だったため、初回のOptionsMenu表示の際にonCreateOptionsMenuが呼ばれていました。

      最近では、画面上のMenuボタン生成時にOptionsMenuの有無を知る必要があるため、Activity表示時にonCreateOptionsMenuが呼ばれるようになっています。

    2. onPrepareOptionsMenuメソッドをオーバーライドして、メニュー表示時に、メニューアイテムの処理を変更してみましょう。

      サンプル : MainActivity.java

      コードを表示するにはJavaScriptを有効にしてください

  7. アプリを実行して動作を確認してみましょう。

OptionsMenuに関する詳細については公式ドキュメントに記載されています。

また、Androidは先人たちがネット上にたくさんの情報を残してくれています。

これらも活用して、是非このAPIを有効に使えるようになってください。