I am trying to use Jetpack Navigation component. so navigation component will automatically handle if I want to segue from a destination to another destination when I click a menu in the navigation drawer

but I want to perform an action if a menu is clicked, say for example if a menu in drawer is clicked then I want to show a toast message.

in old way, ie using fragment transaction, I can easily check from onNavigationItemSelected, but I am no longer find that method

enter image description here

so how to do that in navigation component ?

I have tried to check onDestinationChanged , but it doesn't work

override fun onDestinationChanged(controller: NavController, destination: NavDestination, arguments: Bundle?) {

        if (destination.id == R.id.my_destination {

           // show toast in here
           // but it doesn't work
          
        }

    }

here is my MainActivity

class MainActivity : AppCompatActivity() {

    private lateinit var navController : NavController
    private lateinit var appBarConfiguration: AppBarConfiguration


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        appBarConfiguration = AppBarConfiguration(setOf(
            R.id.destination_share,
            R.id.destination_message,
            R.id.destination_chat),
            drawer_layout
        )


        // init nav controller
        navController = Navigation.findNavController(this,R.id.nav_host_fragment)

        // set toolbar
        setSupportActionBar(toolbar)

        // set up navigation drawer
        NavigationUI.setupActionBarWithNavController(this,navController, appBarConfiguration)
        NavigationUI.setupWithNavController(navigation_view,navController)

    }

    


    override fun onSupportNavigateUp(): Boolean {
        return NavigationUI.navigateUp(navController,appBarConfiguration)
    }

        
    }
2

There are 2 best solutions below

0
On BEST ANSWER

You can handle Menu clicks as following

     navView.menu.findItem(R.id.logout)
                .setOnMenuItemClickListener { menuItem: MenuItem? ->
                 // write your code here
                    true
                }
0
On

Have you tried using

bottom_nav_view.setOnNavigationItemSelectedListener {

    if (destination.id == R.id.my_destination {

       // show toast in here
       // but it doesn't work    
    }
}