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