android - 如何在 Android 的 ListActivity 中实现上下文菜单?

标签 android user-interface long-click

如何实现由长按或点击使用内置布局和 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/

相关文章:

html - 如何使下拉100%宽度包含react js中的另一个下拉?

android - 无法使用 JNI 代码编译 android 项目(未找到算法)

java - 收到推送通知,但没有消息

java - 自动向下滚动 JTextArea 以显示最后添加的行

java - 通过长按 ListView 项目,Android onCreateContextMenu 致命异常

android - ListView长按动画

java - Android - 为什么 onItemLongClick(...) 返回一个 boolean 值?

android - 色调菜单图标

java - 如何在回收站 View 中隐藏广告 View

android - 我正在使用 AsyncTask 来执行一项长时间运行的任务,但它似乎仍在主 ui 中执行