如何实现由长按或点击使用内置布局和 ListAdapter 的 ListActivity 触发的上下文菜单?
最佳答案
关于 onCreate 方法调用 registerForContextMenu像这样:
registerForContextMenu(getListView());
然后在 onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) 上填充菜单. 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并且这个事实在文档中没有明确解释,只是说您使用另一种方法来接收来自上下文菜单的调用;请注意,不要共享 ID。
在 onContextItemSelected 上,您可以通过调用 getMenuInfo() 获得 MenuInfo 和所选项目的 ID。 :
try {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return false;
}
long id = getListAdapter().getItemId(info.position);
关于android - 如何在 Android 的 ListActivity 中实现上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433761/