2015-03-13 4 views
0

Скажем, у меня есть погружение в 3 разных карты в CardScrollView. Теперь я хочу использовать меню на каждой из этих карт. но каждая соответствующая карта в CardScrollView должна иметь собственное соответствующее меню.другое меню для карт в том же CardScrollView

Есть ли способ сделать это? Кажется, я не могу найти документацию.

ответ

1

Вы можете попробовать что-то вроде этого:

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); 
} 
+0

, что отлично работает после того, как я добавил menu.clear(); над выключателем. Единственная проблема, с которой я сейчас сталкиваюсь, заключается в том, что мои голосовые команды не будут работать. Поэтому, когда я говорю «ok glass», он не будет отвечать. Когда я беру OnPrepareOptionsMenu(), он работает отлично. Любое решение для этого? – TheUnknown

+0

Каждый раз, когда ваш CardScrollView меняет позиции (или что-то случается, когда требуются разные элементы голосового меню), попробуйте вызвать invalidateOptionsMenu(). Кроме того, попробуйте настроить пункты меню в onPreparePanel (int featureId, View view, Menu menu), а не OnPrepareOprionsMenu(). Здесь может возникнуть проблема. –

+0

Я просто попытался, и это действительно устранило проблему. Только вариант, который я хочу попробовать сейчас, - это не показывать меню при извлечении карты. только когда используется «Окстекло». попробовал комментировать вызов 'openOptionsMenu()', но когда я это сделаю, он всегда будет показывать первое меню. Независимо от того, на какой карте я получаю меню для первой карты. Когда я использую вызов, все работает отлично. – TheUnknown