上下文菜单不起作用

时间:2012-05-30 18:22:24

标签: android

嘿伙计们,我正在关注Android市场上的'Diaro'和'my Diary'应用程序。 项目将显示在列表视图中,并且在长按项目时,会打开包含各种选项(如编辑,删除等)的上下文菜单。我尝试在我的应用程序中实现相同的功能,这是类似的。但问题出在onContextItemSelected(MenuItem item)我无法获得点击项目的内容。这是onContextItemSelected(MenuItem item)的代码:

@Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
    switch (item.getItemId()) {
    case R.id.edit:


        break;v

          // rest of the codetion
    }

    return super.onContextItemSelected(item);
}

有人可以告诉我如何从此功能中获取列表视图中单击项目的ID?我真的可以在这里使用一些帮助:)

2 个答案:

答案 0 :(得分:3)

您必须为contextMenu注册yourView,如下所示:

list = getListView();
registerForContextMenu(list);

并且必须使用onCreateContextMenu来构建它

@Override
public void onCreateContextMenu(ContextMenu contextMenu,
                                View v,
                                ContextMenu.ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info =
            (AdapterView.AdapterContextMenuInfo) menuInfo;
    selectedWord = ((TextView) info.targetView).getText().toString();
    selectedWordId = info.id;

    contextMenu.setHeaderTitle(selectedWord);
    contextMenu.add(0, CONTEXT_MENU_EDIT_ITEM, 0, R.string.edit);
    contextMenu.add(0, CONTEXT_MENU_DELETE_ITEM, 1, R.string.delete);
}

你的contextMenu标题中有listView项,而它在selectedWordId中是id

了解更多信息,请参阅此链接:Detecting which selected item (in a ListView) spawned the ContextMenu (Android)

答案 1 :(得分:0)

我有一段时间遇到同样的问题,发现我在我的活动中有onMenuitemselected(),这是在听上下文菜单项而不是在contextitemselected()上,希望这有帮助。