我在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
时)。(它只更改三点菜单中项目的可见性..而不是drawables图标)。
只有当我点击三点菜单时,它才会按照我的意愿开始工作。
如果我打开应用程序并显示对话框并关闭它,菜单就可以正常工作..
如何在打开应用程序时将其修复?
由于
修改
<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();
.....
每件事都运作良好。