2014-11-20 2 views
0

Это мой пункт меню код,значок Android меню не отображается в панели действий

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/budget_create" android:orderInCategory="100" 
      android:icon="@drawable/add" 
      android::showAsAction="ifRoom" 
      android:title="New Monthly Budget" 

     ></item> 
    </menu> 

Это мой Java-код,

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     // TODO Auto-generated method stub 
     inflater.inflate(R.menu.budget_create_menu, menu); 

    super.onCreateOptionsMenu(menu, inflater); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

    case R.id.budget_create: 

     Intent i=new Intent(getActivity(),Budget_Monthly_details.class); 

      startActivity(i); 
      getActivity().overridePendingTransition(R.anim.abc_slide_in_top, R.anim.abc_slide_out_top); 

     break; 
} 

Отредактировано

После onMenuOpened() Добавлен код. Я получаю такие изображения.

Я хочу значок в панели действий.

enter image description here

+2

Зачем получать downvote? что-то не так в моем qtn? –

+1

им тоже не понравилось, кто wiil downvote, почему пользователь делает этот вид работы –

+0

какую тему вы используете для своей деятельности. –

ответ

2

Добавьте этот код в ваш Activity где вы раздувание вашего меню .. Этот кусок кода работал для меня .. надеюсь, что это работает для вас тоже ..

@Override 
public boolean onMenuOpened(int featureId, Menu menu) { 
    if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { 
     if (menu.getClass().getSimpleName().equals("MenuBuilder")) { 
      try { 
       Method m = menu.getClass().getDeclaredMethod(
         "setOptionalIconsVisible", Boolean.TYPE); 
       m.setAccessible(true); 
       m.invoke(menu, true); 
      } catch (NoSuchMethodException e) { 
       Log.e(TAG, "onMenuOpened", e); 
      } catch (Exception e) { 
       throw new RuntimeException(e); 
      } 
     } 
    } 
    return super.onMenuOpened(featureId, menu); 
} 

Примечание: Этот метод применим только для Activity только .. Fragments не поддерживается onMenuOpened() способ.

Редакцией:

Если вы хотите ICON видимую в ActionBar (Вне переполнением меню) ..

попробовать следующий вариант ..

 yourapp:showAsAction="ifRoom" 

например

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:yourapp="http://schemas.android.com/apk/res-auto"> 


    <item android:id="@+id/action_add" 
     android:icon="@drawable/add" 
     android:title="My Monthly Budget" 
     yourapp:showAsAction="always" /> 

</menu> 
+0

Get return super.onMenuOpened (featureId, menu); undefined in fragment error –

+0

Я упоминал ACTIVITY .. попытаюсь опубликовать его в вашей деятельности, которая содержит этот фрагмент .. –

+1

, но если вы напишете его в Activity .., это повлияет и на фрагменты ... bcoz фрагменты вызывают действия MENU при добавлении новых пункты .. попробуйте добавить его в ДЕЯТЕЛЬНОСТЬ и запустить свою программу. –

1

Изменить файл меню макета так:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@+id/action_add" 
     android:icon="@drawable/add" 
     android:title="My Monthly Budget" 
     android:showAsAction="ifRoom" /> 

</menu> 
Смежные вопросы