Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未调用onCreateContextMenu_Java_Android_Android Layout_Android Contextmenu - Fatal编程技术网

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()
?请查看更新的答案,如果有帮助,请接受并向上投票。感谢您花时间和帮助。很高兴知道这有帮助。