第一次在 Ice Cream Sandwich 中加载 Activity 时,onCreateOptionsMenu 不会在 ActionBar 中设置图标或选项

发布于 2024-12-29 00:06:07 字数 2253 浏览 2 评论 0原文

我使用普通的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尘曦 2025-01-05 00:06:07

有一种情况, 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.

初见你 2025-01-05 00:06:07

这是正确的方法:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menuColores: /your code here


<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/menuColores" android:alphabeticShortcut="k"
android:icon="@drawable/palette" /> </menu>

我正在开发一个应用程序,这是我的代码片段..它工作得很好!有时,当我更改项目的图像时,我必须清理项目,否则它可能无法识别图像

This is the right way to do it:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menuColores: /your code here


<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/menuColores" android:alphabeticShortcut="k"
android:icon="@drawable/palette" /> </menu>

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文