我正在努力寻找问题的解决方案:
我想只为位置1及以上的项目打开一个contextMenu。
我注册了我的listView:
registerForContextMenu(mDrawerList);
我注册了OnItemLongClickListener:
mDrawerList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
if (position != 0)
mDrawerList.showContextMenu();
return true;
}
});
但在onCreateContextMenu
中,ContextMenuInfo
返回null,
如果我删除OnItemLongClickListener
并通过registerForContextMenu
的单个调用将其保留,则ContextMenuInfo
不会为空。
:
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
selectedPosition = info.position;
....
...
}
我该如何解决?
答案 0 :(得分:0)
删除长按监听器...理论上你需要在抽屉本身注册上下文菜单,而你不需要调用“showContextMenu”
应该是这样的:
在您的抽屉片段中写下这个:
registerForContextMenu(mDrawerListview);
删除onItemLongClickListener,因为它应该由您注册上下文菜单的事实触发,您的长按侦听器会覆盖它