安卓工具栏菜单 - 动态更改

问题描述:

我有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

解决方法是升级模拟器。也许是模拟器中的一个错误。当我在一些设备上尝试它时,它工作正常。