Компонент навигации: передача пакетов в пункты назначения с помощью нижней навигации - PullRequest
0 голосов
/ 03 мая 2019

В моем приложении есть фрагмент хоста для группы представлений, к которым пользователь может перейти с помощью BottomNavigationView. Этот BottomNavigationView подключен к моему навигационному контроллеру через setupWithNavController.

Мой фрагмент хоста получает пакет с некоторой информацией, которую я хотел бы, чтобы каждый фрагмент получал при переходе (через нижнюю навигационную панель) в виде пакета.

Мое текущее решение выглядит как

        mutableListOf<NavDestination>().apply {
            addIfNotNull(graph.findNode(R.id.frag1))
            addIfNotNull(graph.findNode(R.id.frag2))
            addIfNotNull(graph.findNode(R.id.frag3))

            forEach {
                // args is a safe args object for this host fragment
                it.addArgument("argName", NavArgument.Builder().setDefaultValue(args.argName).build())
            }
        }

Хотя это работает, оно не будет хорошо масштабироваться, так как я вручную добавляю аргументы для каждого пункта назначения. Поскольку я не вручную перемещаюсь к каждому пункту назначения, скорее это делается с помощью BottomNavigationView. Я не уверен, как вручную добавить этот комплект.

1 Ответ

0 голосов
/ 29 мая 2019
navController.addOnDestinationChangedListener { controller, dest, args ->
            when (dest.label) {
                "YOUR_LABEL_HERE" -> {
                    val arg01 = NavArgument.Builder().setDefaultValue("SOME VALUE").build()
                    val arg02 = NavArgument.Builder().setDefaultValue("SOME OTHER VALUE").build()
                    dest.addArgument("KEY_NAME", arg01)
                    dest.addArgument("OTHER_KEY_NAME", arg02)
                }
            }
        }

попробуй это. Должно работать нормально.

...