Вы можете попробовать что-то вроде этого:
mCardScrollView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
currentPosition = position;
openOptionsMenu();
}
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.share_menu, menu); //fake call
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
switch (currentPosition) {
case FIRST:
getMenuInflater().inflate(R.menu.first_menu, menu);
break;
case SECOND:
getMenuInflater().inflate(R.menu.second_menu, menu);
break;
case THIRD:
getMenuInflater().inflate(R.menu.third_menu, menu);
break;
}
return super.onPrepareOptionsMenu(menu);
}
, что отлично работает после того, как я добавил menu.clear(); над выключателем. Единственная проблема, с которой я сейчас сталкиваюсь, заключается в том, что мои голосовые команды не будут работать. Поэтому, когда я говорю «ok glass», он не будет отвечать. Когда я беру OnPrepareOptionsMenu(), он работает отлично. Любое решение для этого? – TheUnknown
Каждый раз, когда ваш CardScrollView меняет позиции (или что-то случается, когда требуются разные элементы голосового меню), попробуйте вызвать invalidateOptionsMenu(). Кроме того, попробуйте настроить пункты меню в onPreparePanel (int featureId, View view, Menu menu), а не OnPrepareOprionsMenu(). Здесь может возникнуть проблема. –
Я просто попытался, и это действительно устранило проблему. Только вариант, который я хочу попробовать сейчас, - это не показывать меню при извлечении карты. только когда используется «Окстекло». попробовал комментировать вызов 'openOptionsMenu()', но когда я это сделаю, он всегда будет показывать первое меню. Независимо от того, на какой карте я получаю меню для первой карты. Когда я использую вызов, все работает отлично. – TheUnknown