在命令中更改NavigationView的内容(如buttonpress)

时间:2016-02-24 13:35:11

标签: 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中的方法中,或者我的其他一个片段中,它并不重要,但它不应该仅在创建MainActivity时运行,而不是足够。此外,我可能需要在添加内容之后重新绘制导航抽屉(我猜测),但我也不知道如何做到这一点,所以任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

我尝试了以下代码

此处buttonButton类型的变量,我在其上添加了onClickListener

编辑::在活动中这样做

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());
    }
});

编辑::在片段中这样做

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());
    }
});

它的工作......

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