Android Navigation Component: How to add a destination programmatically?

I've got two working ways:

navController.graph.addDestination(ActivityNavigator(this).createDestination().apply {
    id = R.id.new_dest
    setComponentName(ComponentName(context, NewActivity::class.java))
    // or setIntent
})

or this

navController.graph.addDestination(
    navController.navigatorProvider.getNavigator(ActivityNavigator::class.java)
        .createDestination().apply {
            id = R.id.new_dest
            setComponentName(ComponentName(context, NewActivity::class.java))
        }
)

There is also a DSL builder ActivityNavigatorDestinationBuilder.

Fragment is similar. Change ActivityNavigator to FragmentNavigator and use different setters.

I also made a mistake when I added a destination in one graph and tried to navigate to the new destination in another graph. of course that never work.


Did you try to pass the ID of your newly created Destination in navigate(), like navigate(myDes.getId())