基本上,我想在用户在网格视图中短按或长按单元格时显示不同的上下文菜单。我的问题是,如果用户短按,则调用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);
}
});