====== ダイアログの中でContextMenuを使う ======
===== 概要 =====
ダイアログの中に、ListViewなどの要素を置いて、コンテキストメニューを使って制御をしたい。
そういう場合、通常のActivityで行っているように、OnCreateContextMenu()とOnContextItemSelected()を実装しても、メニュー選択の処理がされない。
ここでは、メニューを作成し、適切にコールバックを受け取る方法について説明する。
===== ダイアログクラスの作成 =====
class MyDialog extends Dialog implements OnClickLisener
のように、Dialogを継承し、OnClickListenerを実装したクラスを宣言する。
===== コンテキストメニューの登録 =====
Listview listView;
registerForContextMenu(listView);
listView.setOnCreateContextMenuListener(this);
registerForContextMenuの後に、setOnCreateContextMenuListener()をする。ここが、Activityの場合との違いのまず第一点目である。
===== コンテキストメニューの作成 =====
これは、通常通り OnCreateContextMenu()で行う。
===== コンテキストメニュー選択後の処理 =====
Activityでやるように、OnContextItemSelected()を実装しても、ここに処理が渡されることはない。
代わりに、
boolean onMenuItemSelected(int featureId, MenuItem item)
を実装してやる。ここが、もう一点の相違である。
あとは、通常 OnContextItemSelected()で行っているように処理を行えば良い。
[[Androidに関して]]へ戻る。