<HOME

ContextMenuを表示する30分


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


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

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

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

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


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

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

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

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

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

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

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

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

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

    1. OptionsMenuの項と同様に、Menuリソースを作成します。

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

      サンプル : res/menu/context.xml

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

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

    1. ContextMenuは、ActivityではなくViewに紐付きます。

      Viewクラスの「setOnCreateContextMenuListener」メソッドで、コールバックメソッド「onCreateContextMenu」のリスナを登録します。

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

      onCreateContextMenuメソッドにて、MenuInflaterを利用してリソースファイルをinflateし、menuオブジェクトへ追加します。

      ContextMenuを使用したい場合は、onCreateContextMenuメソッドの戻り値をtrueにします。

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

      サンプル : res/layout/activity_main.xml

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

      サンプル : MainActivity.java

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

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

    1. Menuインスタンスから「findItem」メソッドを使用してMenuItemのインスタンスを取得し、

      MenuItemの「setOnMenuItemClickListener」メソッドでクリック時のリスナをセットします。

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

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

      サンプル : MainActivity.java

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

  5. アプリを実行して動作を確認してみましょう。対象のViewを長押ししてメニューを表示します。

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

    1. OptionsMenuとは異なり、ContextMenuは毎回、表示の際にonCreateContextMenuメソッドがコールされます。

      条件によってメニューアイテムの処理を変更してみましょう。

      サンプル : MainActivity.java

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

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

  8. ActivityクラスはOnCreateContextMenuListenerインタフェースを実装しており、setOnCreateContextMenuListenerの引数に指定できます。

    Viewの種類によって変化するContextMenuなどは前述の方法の方が実装しやすい場合が多いですが、

    場合によってはActivityのメソッドを利用するのが有効な場合もあります。

    ContextMenu選択時のコールバックの実装に、Activityクラスの「onContextItemSelected」を利用することもできます。

    サンプル : MainActivity.java

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

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

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

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