Объединить TabActivity меню с меню действий - PullRequest
3 голосов
/ 10 ноября 2011

Основным видом деятельности моего приложения является TabActivity, и оно содержит OptionsMenu.Я определяю некоторые другие действия (которые входят во вкладку), и я хотел бы определить меню в каждом из этих действий и объединить его меню с основным.Возможно ли это?

Ответы [ 2 ]

9 голосов
/ 22 ноября 2011

Да, это возможно.По сути, вы просто надуете несколько XML-файлов в одно и то же меню параметров.Элементы добавляются в меню в порядке инфляции.

Просто переписайте onCreateOptionsMenu(Menu menu) для вашего TabActivity, надувая xml-файл, содержащий основные параметры.Затем перезаписать его для каждого из ваших внутренних действий вкладки, раздувая специфичные для вкладки опции.Просто напишите их, как вы обычно это делаете:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.options, menu);
    return super.onCreateOptionsMenu(menu);
}

Меню «принадлежит» текущему активному действию внутренней вкладки, но для его заполнения onCreateOptionsMenu автоматически вызывается и для родительских действий (на super).

Однако, как ни странно, onMenuItemSelected(int featureId, MenuItem item) не делает то же самое.Чтобы обработать выбор элемента, действия внутренней вкладки все равно должны явно вызывать соответствующий метод родительской операции (после того, как вы определите, что выбранный параметр не зависит от вкладки):

return super.onMenuItemSelected(featureId, item)
    || getParent().onMenuItemSelected(featureId, item);
1 голос
/ 21 ноября 2011

Вы создаете меню динамически или в отдельных XML-файлах?

если динамически вы можете просто установить его как

public void createMenu()
{

//Main Menu here

   switch(tab)
   {

      case '1':  //add tab 1 menu
      break;
      case '2':  //add tab 2 menu
      break;

   }

}
...