2010-10-25 42 views
3

我想显示一个自定义View的ContextMenu不是一个AdapterView的一部分。Android:如何创建一个自定义视图的ContextMenu

我叫

myActivity.registerForContextMenu(myView); 

和文本菜单已经显示出来。

但我不知道如何访问MyView的的数据

@Override 
onContextItemSelected(MenuItem item) //... 

我认为我可以在

@Override 
onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) //... 

创建自定义menuInfo这是从文档:“menuInfo - 有关应该显示上下文菜单的项目的额外信息。此信息将根据v的类别而有所不同。“

任何人都可以给我一个提示吗?

回答

5

您的自定义视图类应该覆盖getContextMenuInfo()并返回一个实现ContextMenuInfo的自定义对象(考虑到接口没有成员,不是很难!),并且包含您希望菜单单击处理程序获取的额外的每个视图数据。

然后,您可以通过调用item.getMenuInfo()onContextItemSelected(MenuItem item)获取此对象并转换返回的值。

+1

好的,谢谢!这帮助了我很多:) – cody 2010-10-25 15:43:33

+0

你可以给一个示例代码?我坚持下去。 – 2014-07-18 13:24:20

+0

我终于找到了它,我正在使用未实现getContextMenuInfo()方法的自定义GridView。如果有人需要样本,我已发布[此处](http://vinaybhargav.wordpress.com/2014/07/20/android-floating-context-menu-for-listviewgridview/)。 – 2014-07-20 08:36:19