<HOME
ContextMenuを表示する
30分
アプリでメニューを表示するには、「OptionsMenu」や「ContextMenu」を使用します。
OptionsMenuは、MenuキーやMenuボタンを押すことで表示され、アプリ全般やActivity固有のメニューのために使われます。
(Windows等PCでいうところのツールバーのようなものです)
ContextMenuは、リンク等、Activity内のViewを長押しすることで表示され、その項目(View)固有のメニューのために使われます。
(Windows等PCでいうところの右クリックメニューのようなものです)
ContextMenuの利用方法について学習します。
「ContextMenuTraining」アプリを作成します。
Android Studioを起動し、新規プロジェクトを作成します。
「Welcome to Android Studio」画面の場合は、「Start a new Android Studio project」をクリックします。
別のプロジェクトが開いている場合は、ツールバーから「File」→「New」→「New Project...」をクリックします。
HelloWorldの時と同じようにプロジェクトを作成していきます。
アプリ名は「ContextMenuTraining」としてください。
今回は「Backwards Compatibility (AppCompat)」のチェックは外しておきます。
Menuリソースを作成しましょう。
OptionsMenuの項と同様に、Menuリソースを作成します。
ファイル名は「context.xml」としておきましょう。
サンプル : res/menu/context.xml
コードを表示するにはJavaScriptを有効にしてください
ソースコードにてMenuリソースをInflateして、Menuを表示させましょう。
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を有効にしてください
ContextMenuを実行した際の処理を追加しましょう。
Menuインスタンスから「findItem」メソッドを使用してMenuItemのインスタンスを取得し、
MenuItemの「setOnMenuItemClickListener」メソッドでクリック時のリスナをセットします。
メニューアイテムが選択された際の処理を実行した場合は、コールバックメソッド「onMenuItemClick」の戻り値をtrueにします。
コードを表示するにはJavaScriptを有効にしてください
サンプル : MainActivity.java
コードを表示するにはJavaScriptを有効にしてください
アプリを実行して動作を確認してみましょう。対象のViewを長押ししてメニューを表示します。
条件によってメニューの表示内容を変更してみましょう。
OptionsMenuとは異なり、ContextMenuは毎回、表示の際にonCreateContextMenuメソッドがコールされます。
条件によってメニューアイテムの処理を変更してみましょう。
サンプル : MainActivity.java
コードを表示するにはJavaScriptを有効にしてください
アプリを実行して動作を確認してみましょう。
ActivityクラスはOnCreateContextMenuListenerインタフェースを実装しており、setOnCreateContextMenuListenerの引数に指定できます。
Viewの種類によって変化するContextMenuなどは前述の方法の方が実装しやすい場合が多いですが、
場合によってはActivityのメソッドを利用するのが有効な場合もあります。
ContextMenu選択時のコールバックの実装に、Activityクラスの「onContextItemSelected」を利用することもできます。
サンプル : MainActivity.java
コードを表示するにはJavaScriptを有効にしてください
ContextMenuに関する詳細については公式ドキュメントに記載されています。
APIガイド
ContextMenu
MenuItem
また、Androidは先人たちがネット上にたくさんの情報を残してくれています。
これらも活用して、是非このAPIを有効に使えるようになってください。