根据命令更改 NavigationView 的内容(如按下按钮)
Changing content of NavigationView on command (like buttonpress)
所以我正在尝试向我的导航抽屉动态添加一些内容。原则上,它是有效的。我可以在我的应用程序中添加东西,我可以让它显示在导航抽屉中。唯一的问题是,我必须重新启动应用程序才能弹出导航抽屉中的新内容(因为我只能让代码在 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");
非常基本,但它满足了我的要求。它在菜单中添加了 "test" header。
我想要的是能够随意访问这段代码,例如当我按下一个按钮时。不幸的是,我自己无法做到这一点。它是在 MainActivity 中的方法中,还是在我的其他片段中,这无关紧要,但它不应该只是在创建 MainActivity 时 运行,这是不够的。另外,我可能需要一个 Navigation Drawer re-draw 在添加一些东西后(我猜),但我也不知道该怎么做,所以任何帮助都会很棒。
我尝试了以下代码
这里 button
是变量 if 类型 Button
并且我在上面添加了 onClickListener
。
编辑 :: 在 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());
}
});
编辑 :: 在片段中这样做
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());
}
});
它正在工作...
这会将菜单添加到上一个菜单的末尾。
所以我正在尝试向我的导航抽屉动态添加一些内容。原则上,它是有效的。我可以在我的应用程序中添加东西,我可以让它显示在导航抽屉中。唯一的问题是,我必须重新启动应用程序才能弹出导航抽屉中的新内容(因为我只能让代码在 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");
非常基本,但它满足了我的要求。它在菜单中添加了 "test" header。
我想要的是能够随意访问这段代码,例如当我按下一个按钮时。不幸的是,我自己无法做到这一点。它是在 MainActivity 中的方法中,还是在我的其他片段中,这无关紧要,但它不应该只是在创建 MainActivity 时 运行,这是不够的。另外,我可能需要一个 Navigation Drawer re-draw 在添加一些东西后(我猜),但我也不知道该怎么做,所以任何帮助都会很棒。
我尝试了以下代码
这里 button
是变量 if 类型 Button
并且我在上面添加了 onClickListener
。
编辑 :: 在 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());
}
});
编辑 :: 在片段中这样做
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());
}
});
它正在工作...
这会将菜单添加到上一个菜单的末尾。