РЕДАКТИРОВАТЬ: Спасибо, но в конце концов я нашел ответ. Я просто использовал временный ArrayList со строкой текста, чтобы определить, какое меню открыть, а затем очистил ArrayList.
У меня OptionsMenu отображается правильно. Мне удается легко щелкнуть по предмету, получить идентификатор предмета и использовать переключатель, чтобы сделать что-то в соответствии с идентификатором. Проблема в том, что я хочу запустить другое плавающее контекстное меню в зависимости от Id. Проблема в том, что метод
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
}
не принимает идентификатор в качестве параметра.
Это означает, что я не могу отправить Id выбранного элемента и открыть контекстное меню в соответствии с ним. Похоже, что этот метод работает с объектами просмотра, чтобы определить, какое меню открыть.
Означает ли это, что мне нужно создавать разные объекты View, потому что, когда я пытаюсь создать экземпляр ContextMenu с другим объектом View, он, похоже, не реагирует. Я попытался создать пустые объекты View для этого вопроса, но он ничего не делает. Мне удалось открыть разные OptionsMenu, используя фрагменты. я использую
this.openContextMenu (mNavigationView);
открыть ContextMenu из метода onNavigationItemSelected.
@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);