При вызове метода onCreate registerForContextMenu , например:
registerForContextMenu(getListView());
и затем заполните меню в onCreateContextMenu (меню ContextMenu, представление View, менюInfo ContextMenuInfo) . Аргумент menuInfo может предоставить информацию о том, по какому элементу долго нажимали, таким образом:
AdapterView.AdapterContextMenuInfo info;
try {
info = (AdapterView.AdapterContextMenuInfo) menuInfo;
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return;
}
long id = getListAdapter().getItemId(info.position);
и вы добавляете пункты меню обычным способом, вызывая menu.add :
menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);
и когда пользователь выбирает опцию, вызывается onContextItemSelected . Также onMenuItemSelected , и этот факт явно не объясняется в документации, за исключением того, что вы используете другой метод для получения вызовов из контекстного меню; просто знайте, не делитесь идентификаторами.
В onContextItemSelected вы можете получить доступ к MenuInfo и, следовательно, к идентификатору элемента, выбранного с помощью вызова getMenuInfo () :
try {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return false;
}
long id = getListAdapter().getItemId(info.position);