2016-08-20 3 views
1

У меня есть группа внутри menu.xml, и я стараюсь изменить видимость группы.Меню панели инструментов Android - динамически меняются

//in the onCreate 
    myToolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(myToolbar); 

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    menu.setGroupVisible(R.id.group, showGroup); 
    return true; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu, menu); 
    return true; 
    } 

Это не изменяет видимость группы, когда я открываю приложение. (Когда я взываю к invalidateOptionsMenu). (Это изменить видимость только из элементов внутри трех точек меню .. не то вводимого коэффициента иконки). Только если я нажму кнопку «Три точки», он начнет работать так, как я хочу. Если я открою приложение и покажу диалог и закрою его, то меню будет работать нормально.

Как я могу исправить его, когда я открываю приложение?

Благодаря

Редактировать


<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<group 
    android:id="@+id/group" 
    > 
<item 
    android:id="@+id/delete_btn" 
    android:icon="@drawable/ic_delete_black_24dp" 
    android:title="delete" 
    app:showAsAction="always" 
    /> 

<item 
    android:id="@+id/invite_btn" 
    android:icon="@drawable/ic_group_add_black_24dp" 
    android:title="invite" 
    app:showAsAction="never" 
    /> 
</group> 
<!-- Settings, should always be in the overflow --> 
<item android:id="@+id/action_settings" 
    android:title="Sign Out" 
    app:showAsAction="never"/> 

</menu> 

если я запускаю этот код:

this.showGroup=true; 
invalidateOptionsMenu(); 

он показывает только invite_btn внутри 3-х точек.

Когда я нажимаю на 3-точки, он отображает значок delete_btn.

В это время, если я запускаю этот код

this.showGroup=false; 
invalidateOptionsMenu(); 
..... 
this.showGroup=true; 
invalidateOptionsMenu(); 
..... 

каждая вещь работает хорошо.

+0

Можете ли вы представить скриншоты того, что вы имеете в виду. Трудно представить себе, что вы имеете в виду –

+0

Или еще лучше, чтобы было лучше скрыть записи меню индивидуально: 'menu.findItem (R.id.menuItem1) .setVisible (showGroup);' Я думаю, что видимость группы работает только при открытии меню переполнения. Если это то, что вы имели в виду, то я могу добавить его в качестве ответа, чтобы вы могли ** принять ** его. –

+0

@Passerby это то же самое, что и раньше ... – Alon

ответ

0

Решением для этого было обновление эмулятора. Возможно, ошибка в эмуляторе. Когда я пробовал его на некоторых устройствах, он работает нормально.

Смежные вопросы