4

我正在使用此代码来获取上下文菜单上的 Clicked Item 位置:

public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    int index = info.position;
}

如此处建议:

Android:如何找到从上下文菜单中单击的位置

但我在行得到 NullPointerException:

 int index = info.position;

为什么会这样?

编辑

我有 2 个已注册的 contextMenu 视图,如下所示:

button1.onClick(view v){
registerForContextMenu(v);
openContextMenu(v);
}

button2.onClick(view v){
registerForContextMenu(v);
openContextMenu(v);
}

然后根据 v.getId() 我填充菜单。

4

2 回答 2

0

请参阅本教程http://www.stealthcopter.com/blog/2010/04/android-context-menu-example-on-long-press-gridview/

于 2012-09-14T12:49:51.217 回答
0

你可以直接使用:

编辑开始

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info;
    try {
        info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    } catch (ClassCastException e) {
        // If the menu object can't be cast, logs an error.
        Log.e("MENU", "bad menuInfo", e);
        return;
    }
    position = sectionAdapter.getIndexForPosition(info.position);
    menu.setHeaderTitle("");
    String[] menuItems = { "item1","item2","item3","item4" };
    for (int i = 0; i < menuItems.length; i++) {
        menu.add(Menu.NONE, i, i, menuItems[i]);
    }
}

编辑结束

public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    int position = item.getItemId();
    switch (position) 
    {

        case 0:
        break;
        .
        .
        .
        default:
        break;
    }
}

希望它会帮助你。

于 2012-09-14T12:51:02.350 回答