2016-08-20 57 views
1

我有menu.xml裏面的組,我嘗試更改組的可見性。安卓工具欄菜單 - 動態更改

//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(); 

它只顯示了3點內invite_btn。

當我點擊3點時,它呈現delete_btn的圖標。

在這個時候,如果我運行此代碼

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

每一件事情效果很好。

+0

你能提供你的意思的截圖。想象一下你的意思有點困難 –

+0

或者更好的是,單獨隱藏菜單條目可能會更好:'menu.findItem(R.id.menuItem1).setVisible(showGroup);' 我認爲組的可見性僅當溢出菜單打開時才起作用。如果這就是你的意思,那麼我可以添加它作爲答案,所以你可以**接受**。 –

+0

@Passerby這和以前一樣... – Alon

回答

0

解決方法是升級模擬器。也許是模擬器中的一個錯誤。當我在一些設備上嘗試它時,它工作正常。