编辑:谢谢,但最后我找到了答案。我只是使用带有文本字符串的临时ArrayList来确定要打开哪个菜单,然后清除ArrayList。
我有一个正确显示的OptionsMenu。我设法轻松地单击了该项目,并获得了该项目的ID,然后使用开关根据ID进行操作。问题是我想根据ID启动不同的浮动上下文菜单。问题在于方法
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
}
不使用ID作为参数。 这意味着我无法发送单击的项目的ID,并无法根据其打开上下文菜单。看来此方法正在与View对象一起使用,以确定要打开哪个菜单。
这是否意味着我必须创建其他View对象,因为当我尝试使用另一个View对象实例化ContextMenu时,它似乎没有反应。我尝试为此创建空的View对象,但是它什么也没做。我确实使用片段打开了不同的OptionsMenu。我在用着 this.openContextMenu(mNavigationView); 通过onNavigationItemSelected方法打开ContextMenu。
@Override
public boolean onNavigationItemSelected(MenuItem item){
int id = item.getItemId();
switch (id) {
case R.id.item1:
this.openContextMenu(mNavigationView);
break;
case R.id.item2:
this.openContextMenu(mNavigationView);
break;
case R.id.item3:
this.openContextMenu(mNavigationView);
break;
default:
break;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//I would need info here to determine what context menu to open
//according to the item's id in onNavigationItemSelected
}
在我放置的onCreate中
registerForContextMenu(mNavigationView);