onCreateOptionsMenu не устанавливает значки или параметры в панели действий при первой загрузке действия в Ice Cream Sandwich - PullRequest
2 голосов
/ 24 января 2012

Я использую обычное 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>

Кто-нибудь видел что-то подобноеэто раньше?

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Был случай, когда onPrepareOptionsMenu (меню) возвращал false вместо super.onPrepareOptionsMenu (меню) и исправлял, что решило мою проблему.Я думаю, что-то изменилось с Ice Cream Sandwich.В любом случае, если вы столкнулись с той же проблемой, что и я, убедитесь, что вы возвращаете super.onPrepareOptionsMenu (меню), а не false.

0 голосов
/ 24 января 2012

Это правильный способ сделать это:

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>

Я занимаюсь разработкой приложения, и это фрагмент моего кода ... он работает просто отлично! иногда мне нужно очистить проект, когда я изменяю изображение элемента, в противном случае он может не распознать изображение

...