2015-01-23 2 views
-1

У меня возникли проблемы, когда я пытаюсь удалить значок настроек и добавить еще один новый значок.Удалить action_settings на ActionBar

То, что я пытался это (никто не разработан):

1.-Удалить элемент в main.xml

2-Изменение OnPrepareOprionMenu

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     // if Navigation drawer is opened, hide the action items 
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 
     menu.findItem(R.id.action_home).setVisible(!drawerOpen); 
     return super.onPrepareOptionsMenu(menu); 
    } 

3.-Change OnOptionsItemSelected

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // title/icon 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    // Handle action bar actions click 
    switch (item.getItemId()) { 
    case R.id.action_home: 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

4.-My menu_home.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/action_home" 
     android:icon="@drawable/ic_home" 
     android:title="Home" 
     android:alphabeticShortcut="r" 
     android:orderInCategory="200" 
     android:showAsAction="ifRoom" /> 
</menu> 

5.-И я попробовал это, на мой фрагмент (где я хочу показать этот дом значок)

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.menu_home,menu); 
     inflater.inflate(R.menu.main,menu); 
     menu.findItem(R.id.action_settings).setVisible(false); 

    } 

5.- main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="@string/action_settings"/> 

    <item 
     android:id="@+id/action_refresh" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="@string/action_refresh"/> 

     <item 
     android:id="@+id/action_rate" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="@string/action_rateapp"/> 

</menu> 

Я знаю, что это не так сложно, но я не понимаю, почему это не исчезает из моего приложения.

Спасибо.

+0

Там меню не является элементом меню 'action_settings' в' R.menu.menu_home'. Это должно быть в «R.menu.main», которое вы также раздуваете, но вы не размещали XML для этого меню. – darnmason

+0

Дело в том, что я создал другое меню, но action_settings находится на R.menu.main (я отредактировал мой пост) ... –

+0

Почему вы используете два разных файла меню? –

ответ

0

Ну ... то, что я сделал это изменить main.xml и menu_main.xml

Мой main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/action_home" 
    android:icon="@drawable/ic_home" 
    android:title="Home" 
    android:alphabeticShortcut="r" 
    android:orderInCategory="200" 
    android:showAsAction="ifRoom" /> 

И я увидел, что я был menu_main.xml я удалил все, и добавил:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> 
<item android:id="@+id/action_home" 
    android:icon="@drawable/ic_home" 
    android:title="Home" 
    android:alphabeticShortcut="r" 
    android:orderInCategory="200" 
    android:showAsAction="ifRoom" /> 

И мне пришлось изменить некоторые вещи на моем MainActivity.java.

Это работало для меня ...

2

Это было предложено раньше с тем, что перестраивать на поддержку ActionBar вызова

super.supportInvalidateOptionsMenu(); 

onCreateOptionsMenu затем называется

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.mapmain, menu); 

      boolean isSDCardReady = MyCheckStorage 
        .isExternalStorageWritable(); 

      // The snapshot or thumbnail create option is not available 
      // unless the sdcard isready 
      MenuItem menuItemSnapshot = menu.findItem(R.id.action_snapshot); 
      if (isSDCardReady) { 
       menuItemSnapshot.setEnabled(true); 
       menuItemSnapshot.setVisible(true); 
      } else { 
       menuItemSnapshot.setEnabled(false); 
       menuItemSnapshot.setVisible(false); 
      } 
... 

return super.onCreateOptionsMenu(menu); 
} 
Смежные вопросы