如何在调用onCreateContextMenu()后取消创建上下文菜单

时间:2012-09-13 13:45:06

标签: android android-listview contextmenu

我有一个活动注册列表视图以创建上下文菜单:

registerForContextMenu(getListView());

问题是长按一些项目不应出现上下文菜单,因为这些项目已被禁用。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);

    bool bDisplayMenu = isItemEnabled(((AdapterView.AdapterContextMenuInfo) menuInfo).position);

    if(bDisplayMenu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }
    else
    {
        // WHAT SHOUlD I DO HERE TO CANCEL THE CREATION OF THE CONTEXT MENU?
    }

}

一旦onCreateContextMenu()被调用,我就没有办法取消创建上下文菜单。

1 个答案:

答案 0 :(得分:2)

嗯,事实证明,如果我在调用super后立即从onCreateContextMenu()退出,那么根本不会出现上下文菜单。

不确定这是不行的方法(我没有看到任何关于此的文档)。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);

    bool bDisplayMenu = isItemEnabled(((AdapterView.AdapterContextMenuInfo) menuInfo).position);

    if(bDisplayMenu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }
    else
    {
        return; // the context menu will not be displayed
    }

}