我有一个活动,它为创建上下文菜单注册了一个列表视图:
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
}
}