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



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

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()后,我看不出有任何方法可以取消上下文菜单的创建。

事实证明,如果我在调用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
    }
}

最新更新