步骤:1) menu.xml中定义了三个菜单项:登录,退出和共享,在此之后默认将退出的可见性设置为false。
android:visible="false"
并使剩下的两个项目可见。这是可选的,因为在Android中默认情况下所有项目都是可见的。
步骤2:当您在登录活动中填充该XML时,不需要在活动中进行任何更改。在这些点上,我们仅显示登录和共享菜单项,并已将LogOff项目的可见性设置为“false”在XML中。
步骤3:当您处于主活动(在登录活动之后显示的活动)中时,请执行以下操作
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
MenuItem item = menu.findItem(R.id.login_id);
item.setVisible(false);//
MenuItem item = menu.findItem(R.id.logOff_id);
item.setVisible(true);
super.onCreateOptionsMenu(menu, inflater);
}
此时您将获得“注销”和“共享”选项,因为我们已将登录菜单项的可见性设置为 false。
在登录成功后的Activity
中,获取ActionBar
中menuItem
的句柄,并更改它的可见性状态。
getMenu().findItem(R.id.login_menu_id).setVisible(false);
如果您正在使用 Toolbar
,那么它将会是这样的
toolbar.getMenu().findItem(R.id.login_menu_id).setVisible(false);
因此,setVisible(boolean)
会更改menuItem
的可见性。希望这可以帮助。
而且我们还可以通过索引在回调方法 onCreateOptionsMenu
或 onPrepareOptionsMenu
中执行。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(!(boolean)PrefUtils.getFromPrefs(this,Constants.IS_LOGIN,false)) {
menu.getItem(1/*R.id.nav_settings*/).setVisible(false);
}
return super.onPrepareOptionsMenu(menu);
}