基本上,当用户短按或长按网格视图中的单元格时,我想显示不同的上下文菜单。我遇到的问题是,如果用户短按 OnItemClick 侦听器,我会看到调试器到达显示上下文菜单的代码,而不是从那里移动到 onCreateContextMenu,而是转到 onItemLongClick。
我尝试使用布尔值来防止执行长点击代码,这确实阻止了该代码的执行,但是即使这样做了 onCreateContextMenu 也不会被调用。
如果我删除 onItemLongClick 侦听器,则短击侦听器可以正常工作并且上下文菜单会正确显示。
我知道其他人提出了类似的问题,但我仍然无法找到有效的解决方案。如果有人可以解决这个问题或指出我正确的方向,请让我知道,在此先感谢。任何能够为我指明正确方向的人都将获得赏金。
这是听众代码的简化版本:
mTGrid.setOnItemClickListener(new OnItemClickListener() {
//this listener should show the context menu for a short click on the gridview.
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
mRequiredMenu = "standard";
parent.showContextMenuForChild(v);
}
});
mTGrid.setOnItemLongClickListener(new OnItemLongClickListener() {
//this listener should show the context menu for a long click on the gridview.
@Override
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
mRequiredMenu = "options";
parent.showContextMenuForChild(v);
}
});