我正在开发一个Android应用程序。首先,让我告诉你我不是专业人士。我现在要做的是根据情况在菜单中添加子菜单。但是我需要经常在我的应用中执行此操作。但是我的问题是我第一次在菜单中添加了一个子菜单。
但是,当我第二次根据条件更新菜单时,现有子菜单不会被删除,新的子菜单会附加到导航抽屉中。如何删除以编程方式添加到菜单的子菜单?为什么我的代码没有删除它?
这是我的代码
public void updateAuthUI()
{
isLoggedIn = tempStorage.getBoolean(getResources().getString(R.string.pref_is_logged_in),false);
Menu menu = leftDrawer.getMenu();
menu.removeItem(getResources().getInteger(R.integer.logout_item_id));
menu.removeItem(getResources().getInteger(R.integer.login_item_id));
menu.removeItem(getResources().getInteger(R.integer.register_item_id));
SubMenu authSubMenu = menu.addSubMenu("Auth");
if(isLoggedIn)
{
authSubMenu.add(1,getResources().getInteger(R.integer.logout_item_id),99,"Sign out");
}
else{
authSubMenu.add(1,getResources().getInteger(R.integer.register_item_id),97,"Register");
authSubMenu.add(1,getResources().getInteger(R.integer.login_item_id),98,"Sign in").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
openLoginActivity();
item.setChecked(true);
return true;
}
});
}
}
这是我的问题的屏幕截图
如您所见,“身份验证”子菜单已添加,但未删除现有子菜单。
尝试
authSubMenu.clear();
在你第一次之前
authSubMenu.add();
我只是SubMenu.clear()
在使用第三方库的Android应用程序中使用过,所以需要从操作栏中清除不需要的子菜单。(我实际上是想完全删除该子菜单,这是我可以找到的唯一方法。它似乎起作用。)
这与您的情况不同,后者authSubMenu
是您刚刚通过添加的菜单menu.addSubMenu("Auth")
,因此您希望它为空。但是,正如您所看到的,它显然不是空的:而是addSubMenu("Auth")
返回该标题的现有子菜单。(我找不到达到这种效果的文档;我只是按照您报告的结果进行操作。)
如果确实如此,那么authSubMenu.clear()
它将从子菜单中删除所有现有项目。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句