我在上下文菜单的代码中得到了NullPointerException
。这里是 onCreateContextmenu 方法
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, MENU_EDIT, 0, "Edit");
menu.add(0, MENU_DELETE, 0, "Delete");
}
我在下面的代码中long buttonId = info.id;
行中收到错误
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
long buttonId = info.id;
switch (item.getItemId()) {
case MENU_EDIT:
function1(buttonId);
break;
case MENU_DELETE:
function2(buttonId);
break;
}
return true;
}
有人可以帮我解决这个问题吗
view
不会传递给 onContextItemSelected
和
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
long buttonId = info.id;
此代码无济于事,因为当视图是button
时menuInfo
null
。Android 文档说"menuInfo 有关应显示上下文菜单的项目的额外信息。此信息将根据v
的类别而有所不同"。当v
是一种ListView
menuInfo
的方法时,就可以了。当它是Button
时,它不起作用。
在onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
中,View v
是产生上下文菜单的button
。将v
复制到全局View
可移动的,并在需要查看生成上下文菜单的按钮的位置使用该。
如何获取触发上下文菜单的按钮视图?