我正在使用带有MenuInflater的常规onCreateOptionsMenu从xml的操作栏加载菜单,并且在Honeycomb上运行良好,但由于某些原因,它在冰淇淋三明治上不会首次加载,因此后续的活动会产生操作栏上的预期项目。

这是我的onCreateOptionsMenu:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    Log.e("test", "createmenu");
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.map_menu, menu);
    //      if (presets.size() == 0)
    //          menu.getItem(4).setEnabled(false);
    return true;
}


这是我的菜单xml文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/info"
    android:icon="@drawable/info"
    android:title="Info"
    android:showAsAction="always" />
<item android:id="@+id/preset"
    android:title="Display Preset Option"
    android:icon="@drawable/presets"
    android:showAsAction="always"  />
    <item android:id="@+id/favorites"
    android:title="Favorites"
    android:icon="@drawable/favorites"
    android:showAsAction="always"  />
<item android:id="@+id/add_favorite"
    android:title="Add Favorite"
    android:icon="@drawable/plus"
    android:showAsAction="always" />
<item android:id="@+id/location"
    android:title="Current Location"
    android:icon="@drawable/location"
    android:showAsAction="always" />
<item android:id="@+id/return_map"
    android:title="Return to Original Map"
    android:showAsAction="ifRoom"  />
<item android:id="@+id/raster"
    android:title="Show Raster"
    android:icon="@drawable/raster"
    android:showAsAction="always" />
<item android:id="@+id/query"
    android:title="Queries"
    android:icon="@drawable/queries"
    android:showAsAction="always" />
<item android:id="@+id/displayNotes"
    android:title="Hide Notes" />
<item android:id="@+id/displayPhotos"
    android:title="Display Photos"
    android:visible="false" />
<item android:id="@+id/add_note"
    android:title="Add Note"/>
<item android:id="@+id/help"
    android:title="Help"/>
<item android:id="@+id/email"
    android:title="Email Map"/>
</menu>


有人看过这样的东西吗?

最佳答案

在某些情况下,onPrepareOptionsMenu(menu)返回false而不是super.onPrepareOptionsMenu(menu)并解决了问题。我猜冰淇淋三明治发生了一些变化。无论哪种方式,如果遇到与我相同的问题,请确保返回的是super.onPrepareOptionsMenu(menu)而不是false。

09-26 09:04