1

我的应用程序有这样的东西:

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

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

我使用本教程使我的应用程序基于 TabHost。

任何人都可以帮助我知道为什么在一个有效而另一个无效?

提前致谢。

更新

关于版本:

<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;
}
4

1 回答 1

3

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

我没有测试过它,但我的猜测是它只是使用第一个从onCreateOptionsMenu. 如果您想为每个选项卡设置不同的选项菜单,则必须做几件事:

1) 子类化TabHost和覆盖onCreateOptionsMenuand onPrepareOptionsMenu

2)当标签更改时(不记得您如何侦听此事件,Google It),调用invalidateOptionsMenu,这将迫使呼叫onPrepareOptionsMenu

3) 在onPrepareOptionsMenu中,记得调用menu.clear(),然后执行您在onCreateOptionsMenu创建选项卡特定选项菜单时所做的正常菜单膨胀操作。

于 2012-04-13T21:23:03.673 回答