- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用以下代码生成 onCreateContextMenu
,但是,在单击列表项时我没有收到任何响应。
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int currentId = (int) info.id;
menu.add(0, MENU_DELETE_ID, 0, "Delete");
}
稍后我将使用 currentId
,但上面的代码不会生成包含 Delete
字样的弹出窗口。
可能是因为我使用的是自定义 AdapterView
,它显示在 this answer 中我之前的问题?此外,如果重要的话,我的 MainActivity
正在扩展 AppCompatActivity
。
我已经检查了其他问题,例如这个 onCreateContextMenu isn't being called但我没有使用 onItemLongClickListener
最佳答案
没有足够的代码来理解这里到底出了什么问题。但我可能会建议在实现 ContextMenu
时注意一些常见错误。
您需要先注册上下文菜单。来自创建上下文菜单的开发人员文档 -
If your activity uses a
ListView
orGridView
and you want each item to provide the same context menu, register all items for a context menu by passing theListView
orGridView
toregisterForContextMenu()
.
因此,您可能会考虑在 ListActivity
的 onCreate
函数中执行类似的操作。
registerForContextMenu(getListView());
而且我在您的 onCreateContextMenu
中没有看到任何 MenuInflater
。您需要在创建上下文菜单时膨胀 View 。
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
来自文档
MenuInflater
allows you to inflate the context menu from a menu resource. The callback method parameters include theView
that the user selected and aContextMenu.ContextMenuInfo
object that provides additional information about the item selected. If your activity has several views that each provide a different context menu, you might use these parameters to determine which context menu to inflate.
而且您可能必须为您的列表项实现一个长按监听器。因为它似乎只适用于长按事件。
When the registered view receives a long-click event, the system calls your
onCreateContextMenu()
method. This is where you define the menu items, usually by inflating a menu resource.
这里是完整的 implementation documentation .希望有帮助!
更新
如果您没有使用 ListActivity
,您将无法调用 getListView
。在这种情况下,只需在为列表注册上下文菜单时传递 ListView
引用即可。
ListView lv = (ListView) findViewById(R.id.my_list);
registerForContextMenu(lv);
关于java - onCreateContextMenu 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41560070/
看起来 onCreateContextMenu 根本没有被调用。在我的 ListActivity 的 onCreate 中,我有: list = getListView(); registerForC
我正在使用以下代码生成 onCreateContextMenu,但是,在单击列表项时我没有收到任何响应。 @Override public void onCreateContextMenu(Conte
我有一个为创建上下文菜单注册 ListView 的 Activity : registerForContextMenu(getListView()); 问题是长按某些项目不应显示上下文菜单,因为这些项
我正在尝试创建一个上下文菜单,根据单击的行更改可用选项。 但在创建菜单之前,我无法弄清楚如何获取被单击行在 ListView 中的行位置。 最佳答案 一点都不明显,但这是代码: public v
怎么了?? 我正在创建一个可移动的 TextView ,所以我可以将它拖放到整个屏幕上......然后,我决定向它添加上下文菜单,所以我做到了,但是上下文菜单只有在我禁用 onTouchListene
我有一个包含多个项目的 LisView。为此,我连接了一个 OnItemClickListener(作为内部类),如下所示: lv.setOnItemClickListener(new OnItemC
刚刚尝试在真实设备(HTC Desire Z with Android 2.2)上测试我的应用程序。并发现我的上下文菜单在 EditText 上根本不起作用。否则上下文菜单有效:在 ListView、
我希望捕获用户触摸事件的坐标(为此我实现了 onTouch 方法),但我还想在用户触摸屏幕时显示上下文菜单。 当同时使用 onTouch 和 onCreateContextMenu 方法时,每个触摸事
我正在尝试使用 onCreateContextMenu 从 ListView 中复制项目文本 OnCreateContextMenu and ListView items和 Copy text fro
我尝试为我的 ListView 创建上下文菜单,但是当我“长按”列表项时,应用程序关闭并显示此跟踪: FATAL EXCEPTION: main java.lang.NullPointerExcept
我正在尝试使用上下文菜单。我已经使用 SimpleCursorAdapter 为简单的 ListActivity 成功完成了此操作。 继续我想用 CursorAdapter 替换 SimpleCurs
我遇到 onCreateContextMenu 问题,仅在 API 15 和 16 上抛出错误。它在从 API 8 到 API 17(我的最小和最大目标)的所有其他 API 上工作得很好。 我尽了最大
在 onCreate 中,我将线性布局 View 附加到变量 activeView。然后调用 registerForContextMenu(activeView)。看起来一切正常,创建了上下文菜单,可
我有一个应用程序,它对 Activity 的 fragment 有很多看法。其中许多 View 需要上下文菜单,因此我必须在 View 的 onCreateContextMenu 中而不是在 Acti
我已经分析了这里的很多帖子,但没有发现任何与我的问题非常相似的问题。 基本上,我试图在 onListItemClick 中调用 openContextMenu(l)。这样做会创建一个没有 menuIn
我是一名优秀的程序员,十分优秀!