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の解説を読んでみると理解が深まる。

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

お名前
メールアドレス
ホームページアドレス
コメント