ContextMenuInfo在调用showContextMenu - android时返回null

时间:2015-02-02 21:28:05

标签: android android-listview contextmenu

我正在努力寻找问题的解决方案:

我想只为位置1及以上的项目打开一个contextMenu。

我注册了我的listView:

registerForContextMenu(mDrawerList);

我注册了OnItemLongClickListener:

mDrawerList.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view,
                    int position, long id) {
                if (position != 0)
                    mDrawerList.showContextMenu();
                return true;
            }
        });

但在onCreateContextMenu中,ContextMenuInfo返回null, 如果我删除OnItemLongClickListener并通过registerForContextMenu的单个调用将其保留,则ContextMenuInfo不会为空。 :

public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
        selectedPosition = info.position;
....
...
}

我该如何解决?

1 个答案:

答案 0 :(得分:0)

删除长按监听器...理论上你需要在抽屉本身注册上下文菜单,而你不需要调用“showContextMenu”

应该是这样的:

在您的抽屉片段中写下这个:

registerForContextMenu(mDrawerListview);

删除onItemLongClickListener,因为它应该由您注册上下文菜单的事实触发,您的长按侦听器会覆盖它