2012-04-13 70 views
1

我的应用程序是这样的:onCreateOptionsMenu不会出现

TabActivity 
    Tab 1 (ActivityGroup) 
     Activity > Activity > MapActivity 
    Tab 2 (ActivityGroup) 
     MapActivity 

的问题是,在标签2 MapActivity选项菜单没有出现,甚至还可以显示一个错误。但在第一个MapActivity完美。我在方法onCreateOptionsMenu中放置了一个断点,但是甚至输入了它。

我用这个tutorial让我的应用程序基于TabHost。

任何人都可以帮助我知道为什么在一个作品和其他不是?

在此先感谢。

UPDATE

关于版本:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="13" /> 

首先MapActivity类:

public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0, 0, 1, "Nearest"); 
    menu.add(0, 1, 1, "Directions"); 
    return true; 
} 

二MapActivity类:

public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0, 0, 1, "Nearest"); 
    menu.add(0, 1, 1, "Region"); 
    return true; 
} 
+0

你能告诉我们一些代码吗?你在哪里打电话给onCreateOptionsMenu? – 2012-04-13 21:18:15

+0

请添加您的onCreateOptions代码。此外,您定位/运行此应用的Android版本是什么? – 2012-04-13 21:20:15

+0

我更新了问题。平台是2.3.3,API级别10.谢谢。 – 2012-04-13 22:24:58

回答

3

基本上TabHost只有一个选项菜单。

我还没有测试过它,但我的猜测是它只是使用第一个从onCreateOptionsMenu返回true的活动。如果你想为每个标签选择不同的选项菜单,你需要做几件事情:

1)子类TabHost和覆盖onCreateOptionsMenuonPrepareOptionsMenu

2)当标签更改(不记得你如何听这个事件,谷歌它),请致电invalidateOptionsMenu,这将强制呼叫onPrepareOptionsMenu

3)在onPrepareOptionsMenu,记得打电话menu.clear(),然后做你在做onCreateOptionsMenu来创建标签特定选项菜单的常规菜单通货膨胀的东西。