如何以编程方式从Android的导航抽屉中删除子菜单?

Wai Yan Hein

我正在开发一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何以编程方式隐藏导航抽屉菜单项?

如何以编程方式创建导航抽屉?

如何以编程方式从菜单中删除项目?

如何以编程方式显示/隐藏导航抽屉

如何以编程方式显示MainMenu的子菜单?

如何从所附片段中以编程方式打开主导航抽屉?

Flutter:如何以编程方式打开抽屉

如何以编程方式将组添加到导航抽屉

如何以编程方式更改Android中的菜单

如何以编程方式更改系统导航?

如何以编程方式将子菜单项添加到新的材质设计android支持库

如何以编程方式而不是菜单xml将子菜单项添加到NavigationView

如何以编程方式在android 10中恢复已删除的联系人

如何以编程方式删除图像的背景,使其在android中透明

如何以编程方式删除/清除android中应用程序的隐藏数据?

如何以编程方式从DataTable中删除DataColumn

如何以编程方式从 Nautilus 书签中添加/删除项目?

如何以编程方式从NSString中删除CDATA?

如何以编程方式从动态 JObject 中删除属性

如何以编程方式删除Django中的群组

如何以编程方式在模块中添加或删除名称

Android导航视图以编程方式设置菜单

Android中的通用导航菜单抽屉

如何以编程方式在android中的linearlayout中给textview位置

如何以编程方式删除文件?

如何以编程方式删除SMS日志?

如何以编程方式从DefaultGazetteer删除查找

如何以编程方式删除AlertDialog

如何以编程方式删除窗体控件