ダイアログの中に、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に関してへ戻る。