Компонент навигации Android: как программно добавить пункт назначения? - PullRequest
2 голосов
/ 29 марта 2019

Я хочу добавить новое место назначения к текущему графу навигации.

Я заметил, что NavGraph имеет метод void addDestination(@NonNull NavDestination node), но я не могу найти правильный способ создания NavDestination и навигациик нему, используя navController.navigate(R.id.new_dest_id).

Ответы [ 2 ]

1 голос
/ 30 марта 2019

У меня есть два способа работы:

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

или этот

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

Существует также построитель DSL ActivityNavigatorDestinationBuilder.

Фрагмент похож,Измените ActivityNavigator на FragmentNavigator и используйте другие установщики.

Я также допустил ошибку, когда добавил пункт назначения в один график и попытался перейти к новому пункту назначения в другом графике.конечно, это никогда не работает.

1 голос
/ 29 марта 2019

Вы пытались передать идентификатор своего вновь созданного Пункта назначения в navate (), например navigate(myDes.getId())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...