Java 未调用onCreateContextMenu
我正在使用以下代码生成Java 未调用onCreateContextMenu,java,android,android-layout,android-contextmenu,Java,Android,Android Layout,Android Contextmenu,我正在使用以下代码生成onCreateContextMenu,但是,当单击列表项时,我没有得到任何响应 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)
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
,如我前面的问题所示?此外,我的MainActivity
正在扩展AppCompatActivity
,如果这很重要的话
我已经检查了其他问题,比如这个问题,但我没有使用
onimlongclicklistener
没有足够的代码来理解这里的实际错误。但我可能建议在实现ContextMenu
时要注意一些常见的错误
您需要先注册上下文菜单。从开发人员创建上下文菜单的文档中-
如果您的活动使用列表视图
或网格视图
,并且您希望每个项目
提供相同的上下文菜单,为上下文菜单注册所有项目
通过将ListView
或GridView
传递到registerForContextMenu()
<>你可以考虑在你的<代码> OnCudio函数中执行这样的事情:<代码> ListActudiop>
registerForContextMenu(getListView());
在您的onCreateContextMenu
中,我没有看到任何MenuInflater
。创建关联菜单时,需要对视图进行充气
@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
允许您从菜单中为上下文菜单充气
资源。回调方法参数包括
用户选择并创建一个ContextMenu.ContextMenuInfo
对象,该对象提供
有关所选项目的其他信息。如果你的活动
多个视图,每个视图都提供不同的上下文菜单,您可以
使用这些参数确定要充气的关联菜单
您可能需要为列表项实现长时间单击侦听器。因为它似乎只适用于长点击事件
当注册视图收到长时间单击事件时,系统调用
您的onCreateContextMenu()
方法。这是定义菜单的地方
项目,通常通过扩大菜单资源
给你全部。希望有帮助
更新
如果您没有使用ListActivity
,您应该无法调用getListView
。在这种情况下,只需在注册列表的上下文菜单时传递ListView
引用即可
ListView lv = (ListView) findViewById(R.id.my_list);
registerForContextMenu(lv);
getListView()
只能在您的活动扩展了Listactivity
的情况下使用,如果我没有弄错的话。因此,由于我不能调用它,这意味着我不能使用onCreateContextMenu()
?请查看更新的答案,如果有帮助,请接受并向上投票。感谢您花时间和帮助。很高兴知道这有帮助。