似乎没有调用onContextItemSelected

ErG*_*404 3 android listview contextmenu

我正在基于列表视图创建一个非常简单的Activity.我想为列表中的每个项目添加一个上下文菜单,所以我打电话给registerForContextMenu(mListView).然后我实现了方法onCreateContextMenuonContextItemSelected.

onCreateContextMenu作品(上下文菜单中显示正确),但是当我点击该菜单没有任何反应的项目,在上下文菜单中刚好消失,并且该方法onContextItemSelected不叫(我只是把日志里面检查).

如果它可以帮助,请注意它ListViewonItemClickListener附加了它.

我忘记了什么吗?

谢谢 !

编辑:这是代码(我隐藏了一些不相关的东西)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mListView = new ListView(this);
    mContacts = new Vector<Contact>();
    mAdapter = new ContactAdapter(this, mContacts);
    registerForContextMenu(mListView);
    mListView.setAdapter(mAdapter);
    mListView.setOnItemClickListener(new OnItemClickListener() {
    ... };
}


@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    if (v == mListView) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.list_item_contextmenu, menu);
    }        
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    Log.v("Contacts", "onContextItemSelected called");
    return super.onContextItemSelected(item);  
}
Run Code Online (Sandbox Code Playgroud)

编辑2:我添加了onContextMenuClosed()方法,在菜单关闭时正确调用.

jen*_*nzz 15

我使用ActionBarSherlock库遇到了同样的问题.

如果您正在使用该库,确保导入正确的菜单项android.view.MenuItem.

或者只是在方法头中指定完整包,如下所示:

public boolean onContextItemSelected(android.view.MenuItem item) {}
Run Code Online (Sandbox Code Playgroud)