2

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

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

4

1 回答 1

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
    }

}
于 2012-09-13T14:16:16.317 回答