6

Hello I'm wondering how can I change a Menu ID from a NavigationView, in this case it is triggered when the user clicks on a RadioButton. I have that part already but I just need to know how to change the Menu, so in the menu it will display different options when RadioButton is clicked.

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
    }

I've tried this already but no success:

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

So in the NavigationView it will go from this:

enter image description here

To this:

enter image description here

bunbun
  • 2,595
  • 3
  • 34
  • 52
Angel R
  • 143
  • 1
  • 7

2 Answers2

5

In java you could try this to re-inflate NavigationView at runtime.

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

I don't know kotlin,but the thought is same.

navylover
  • 12,383
  • 5
  • 28
  • 41
0

this code work for me as explain by navylover answer 1- make sure you have different menu in my case i have R.menu.navigation and R.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)
            }
Hasan Khan
  • 554
  • 1
  • 7
  • 23