将TabActivity菜单与包含的“活动”菜单合并

时间:2011-11-10 16:10:16

标签: android menu tabs tabactivity

我的应用程序的主Activity是TabActivity,它包含一个OptionsMenu。我定义了一些其他活动(进入选项卡),我想在每个活动中定义一个菜单,并将其菜单与主菜单合并。有可能吗?

2 个答案:

答案 0 :(得分:9)

是的,这是可能的。基本上,您只需将多个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 :(得分:1)

您是在动态创建菜单还是在单独的XML中创建菜单?

如果动态,您可以将其设置为

public void createMenu()
{

//Main Menu here

   switch(tab)
   {

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

   }

}