第一次在 Ice Cream Sandwich 中加载 Activity 时,onCreateOptionsMenu 不会在 ActionBar 中设置图标或选项
我使用普通的 onCreateOptionsMenu 和 MenuInflater 从操作栏的 xml 加载菜单,它在 Honeycomb 上工作正常,但由于某种原因在 Ice Cream Sandwich 上它不会第一次加载,后续的活动行程将产生操作栏上的预期项目。
这是我的 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>
有人以前见过这样的东西吗?
I'm using the normal onCreateOptionsMenu with a MenuInflater to load my menu from xml for the action bar and it works fine on Honeycomb but for some reason on Ice Cream Sandwich it doesn't load the first time, subsequent trips to the activity will yield the expected items on the action bar.
Here's my 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;
}
And here's my menu xml file:
<?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>
Anyone seen anything like this before?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有一种情况, onPrepareOptionsMenu(menu) 返回 false 而不是 super.onPrepareOptionsMenu(menu) ,解决这个问题已经解决了我的问题。我想从冰淇淋三明治开始,事情已经发生了变化。无论哪种方式,如果您遇到与我相同的问题,请确保您返回 super.onPrepareOptionsMenu(menu) 并且不是 false。
There was a case where onPrepareOptionsMenu(menu) was returning false instead of super.onPrepareOptionsMenu(menu) and fixing that has solved my problem. I guess something has changed as of Ice Cream Sandwich. Either way, if you're experiencing the same problem as I had make sure you're returning super.onPrepareOptionsMenu(menu) and not false.
这是正确的方法:
我正在开发一个应用程序,这是我的代码片段..它工作得很好!有时,当我更改项目的图像时,我必须清理项目,否则它可能无法识别图像
This is the right way to do it:
I'm developing an app and this is a snippet of my code.. it works just fine! sometimes I have to clean the project when I change the item's image, it may not recognize the image otherwise