我的应用程序具有以下内容:

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


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

我使用此tutorial使我的应用程序基于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;
}

最佳答案

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

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

1)子类TabHost并覆盖onCreateOptionsMenuonPrepareOptionsMenu

2)当选项卡更改时(不记得如何监听此事件,请用Google搜索),请呼叫invalidateOptionsMenu,这将强制呼叫到onPrepareOptionsMenu

3)在onPrepareOptionsMenu中,记住要调用menu.clear(),然后执行在onCreateOptionsMenu中执行的常规菜单填充操作,以创建选项卡特定的选项菜单。

关于android - onCreateOptionsMenu没有出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10148352/

10-11 06:02