如何以编程方式更改NavigationView的菜单?

时间:2018-10-17 21:47:36

标签: android kotlin attributes

您好,我想知道如何从NavigationView中更改菜单ID,在这种情况下,当用户单击RadioButton时会触发该菜单ID。我已经有了那部分,但是我只需要知道如何更改菜单,因此在单击RadioButton时,在菜单中它将显示不同的选项。

private var radioAdm:RadioButton? = null
private var radioAtle:RadioButton? = null
private var atletanav:BottomNavigationView? = null
private var menuopt = "@menu/admin_menu"

override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
     // Here is where I need to put that code
    }

我已经尝试过了,但是没有成功:

atleta_navbar.set(menu){menu=menuopt}
atleta_navbar.setTag(menuopt)

因此,在NavigationView中,它将从此开始:

enter image description here

对此:

enter image description here

2 个答案:

答案 0 :(得分:0)

在Java中,您可以尝试在运行时重新为NavigationView充气。

navigationView.getMenu().clear(); //clear old inflated items.
navigationView.inflateMenu(R.menu.new_navigation_drawer_items);

我不认识科特林,但想法是一样的。

答案 1 :(得分:0)

此代码对我有用,如navylover答案所解释 1-确保在我的情况下您有不同的菜单,我有R.menu.navigationR.menu.navigation_normal

  private fun User() {
                // clear previous menu
                binding.navi.menu.clear()

               // add new menu item
                binding.navi.inflateMenu(R.menu.navigation)

              //add listener for new bottom naviagtion 

       binding.navi.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)

                 // when using Navigation component
                //set up bottom navigation bar with navigation graph 
                NavigationUI.setupWithNavController(binding.navi, navController)
            }