我有一个活动注册列表视图以创建上下文菜单:
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()被调用,我就没有办法取消创建上下文菜单。
答案 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
}
}