我在contextmenu的代码中得到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;
}
有人可以帮我解决这个问题吗
答案 0 :(得分:1)
view
未传递给onContextItemSelected
和
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
long buttonId = info.id;
此视图无效,因为当menuInfo
视图时null
为button
。 Android文档说“menuInfo有关应显示上下文菜单的项目的额外信息。此信息将根据v
的类别而有所不同”。如果v
为ListView
menuInfo
方法,则可以。当它是Button
时,它不起作用。
在onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
中,View v
是生成上下文菜单的button
。将v
复制到全局View
变量,然后在需要的位置使用生成上下文菜单的按钮视图。