我正在制作一个网页浏览器,它有四个标签(标签是使用标签主机完成的),我需要为每个标签选择一个单独的选项菜单。 我该怎么做呢?使用布尔值?
谢谢!
修改(标签的工作方式)
TabHost th = (TabHost) findViewById (R.id.tabHost);
th.setup();
TabSpec specs = th.newTabSpec("Tab1");
specs.setContent(R.id.tab1);
specs.setIndicator("Tab 1");
th.setCurrentTab(1);
th.addTab(specs);
答案 0 :(得分:0)
当用户更改为其他标签页时,您可以使用OnTabChangeListener
来获取回调。根据选项卡ID,您可以操作选项菜单。
当您需要更改菜单时,请致电invalidateOptionsMenu()
。然后,将调用onCreateOptionsMenu()
。然后,您可以膨胀另一个menu.xml
。或者,您也可以等待对onPrepareOptionsMenu()
的后续调用,并通过setVisible()
切换单个菜单项的可见性。
示例: (尚未测试,但应该或多或少)
private static final String TAB_1 = "tab1";
private static final String TAB_2 = "tab2";
private TabHost mTabHost;
private final TabHost.OnTabChangeListener onTabChangedListener = new TabHost.OnTabChangeListener {
public void onTabChanged(String tabId){
invalidateOptionsMenu();
}
};
public void onCreate(Bundle b){
TabHost mTabHost = (TabHost) findViewById (R.id.tabHost);
// ...
mTabHost.setOnTabChangedListener(onTabChangedListener);
mTabHost.setCurrentTabByTag(TAB_1);
}
public boolean onCreateOptionsMenu(Menu menu){
final String currentTab = mTabHost.getCurrentTabTag();
if(TAB_1.equals(currentTab)){
getMenuInflater().inflate(R.menu.main_tab1.xml, menu);
} else if(TAB_2.equals(currentTab)){
getMenuInflater().inflate(R.menu.main_tab2.xml, menu);
}
}