java - 根据命令更改 NavigationView 的内容(如按下按钮)

标签 java android navigationview

所以我正在尝试动态地向我的抽屉导航添加一些内容。原则上,它是有效的。我可以在我的应用程序中添加东西,我可以让它显示在抽屉导航中。唯一的问题是,我必须重新启动应用程序才能弹出抽屉导航中的新内容(因为我只能让代码在 onCreate 方法中工作),这不是所需的行为。

这是我目前在 onCreate 方法中得到的:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
Menu menu = navigationView.getMenu();
MenuItem it1 = menu.add(R.id.group1, 1, 2, "TEST DYNAMIC");

非常基本,但它可以满足我的要求。它在菜单中添加了一个“测试”标题。
我想要的是能够随意访问这段代码,例如当我按下一个按钮时。不幸的是,我自己无法做到这一点。它是在 MainActivity 的方法中还是在我的其他 fragment 之一中并不重要,但它不应该仅在创建 MainActivity 时运行,这还不够。另外,我可能需要在添加一些东西后重新绘制抽屉导航(我猜),但我也不知道该怎么做,所以任何帮助都会很棒。

最佳答案

我试过下面的代码

这里 button 是类型 Button 的变量,我在上面添加了 onClickListener

EDIT::在 Activity 中这样做

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        Menu menu = navigationView.getMenu();
        SubMenu topChannelMenu = menu.addSubMenu("Category");
        topChannelMenu.add("Menu Name");
        MenuItem mi = menu.getItem(menu.size()-1);
        mi.setTitle(mi.getTitle());
    }
});

EDIT::在 Fragment 中这样做

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        NavigationView navigationView = (NavigationView) getActivity().findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        Menu menu = navigationView.getMenu();
        SubMenu topChannelMenu = menu.addSubMenu("Category");
        topChannelMenu.add("Menu Name");
        MenuItem mi = menu.getItem(menu.size()-1);
        mi.setTitle(mi.getTitle());
    }
});

它的工作...

这会将菜单添加到上一个菜单的末尾。

关于java - 根据命令更改 NavigationView 的内容(如按下按钮),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35603691/

相关文章:

java - Quartz 调度程序与设置 cron

android - 如何在 Android 上创建可扩展的表单布局

android - 在 DrawerLayout 中滚动时标题后面的项目列表

java - 为什么 Spring Security 返回空响应正文?

java - 一个匿名类可以有多少个实例?

java - 如何在不使用 sum++; 的情况下正确计算总和?

Android 模拟器 - 错误消息 'Unfortunately browser stopped working'

android - Gradle任务中的类型是什么?

android - NavigationView OnNavigationItemSelectedListener 未被调用

android - 如何更改 NavigationView 中的分隔符颜色?