AndroidのListActivityにコンテキストメニューを組み込む方法

まさにタイトルの件で困って調べたのでメモとして。

リストビュー上でタップ&ホールドをした際に表示されるコンテキストメニューの表示の仕方について。

StackOverflow にそのまんまの記事が載っていた。

How do you implement context menu in a ListActivity on Android?

ListActivity を継承した Activity の onCreate 関数の中で

registerForContextMenu(getListView())

を呼び出すのが第一歩。

続いて、同Activityに

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    ...
}

という関数を作成する。
この関数はコンテキストメニューを表示するたびに呼ばれるので、ここでメニューをごにょごにょいじれば、表示するたびに状況に対応したメニューを表示することができる。

ユーザーが実際にメニューを選択したら、今度は onConetextItemSelected 関数が呼び出されるので、これも用意する。

@Override
public void onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    ...
}

これで、ユーザーがどのメニューを選択したか分かるので、処理を進めることができる。

どうのこうのいって一番詳しいのは公式のAndroid DevelopoersのActivityのAPIリファレンス
この記事で処理の流れを把握し、公式APIリファレンスのonCreateContextMenuやonContextItemSelectedの解説を読んでみると理解が深まる。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック