修复代码中的java.lang.NullPointerException

时间:2013-11-12 12:16:33

标签: android-contextmenu

我在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;
}

有人可以帮我解决这个问题吗

1 个答案:

答案 0 :(得分:1)

view未传递给onContextItemSelected

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); long buttonId = info.id;

此视图无效,因为当menuInfo视图时nullbutton。 Android文档说“menuInfo有关应显示上下文菜单的项目的额外信息。此信息将根据v的类别而有所不同”。如果vListView menuInfo方法,则可以。当它是Button时,它不起作用。

onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)中,View v是生成上下文菜单的button。将v复制到全局View变量,然后在需要的位置使用生成上下文菜单的按钮视图。

How to get the Button view which triggered a Context Menu?