Компонент навигации с нижней навигацией всегда создает новый фрагмент - PullRequest
0 голосов
/ 26 февраля 2019

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

Я хочу использовать только компонент навигации.

binding.bottomNavBar.setOnNavigationItemSelectedListener {
        when (it.itemId) {
            R.id.currentWeatherFragment -> {
                navController.popBackStack(R.id.currentWeatherFragment, false)
                return@setOnNavigationItemSelectedListener true
            }

            R.id.futureListWeatherFragment -> {
                if (futureNumber > 0) {
                    Log.d("test", "popbackstack")
                    navController.popBackStack(R.id.futureListWeatherFragment, false)
                } else {
                    navController.navigate(navController.graph.findNode(R.id.futureListWeatherFragment)!!.id)
                    futureNumber++
                    Log.d("test", "navigate")
                }
                return@setOnNavigationItemSelectedListener true
            }

            R.id.settingsFragment -> {
                if (settingsNumber > 0) {
                    navController.popBackStack(R.id.settingsFragment, false)
                } else {
                    navController.navigate(navController.graph.findNode(R.id.settingsFragment)!!.id)
                    settingsNumber++
                }
                return@setOnNavigationItemSelectedListener true
            }

        }
        false
    }

1 Ответ

0 голосов
/ 26 февраля 2019

Боюсь, сейчас это невозможно.Поскольку навигационный компонент все еще находится на стадии бета-тестирования, к сожалению, ему не хватает возможности адаптироваться ко всем случаям.

Одним из решений было бы сохранить все ваши данные в видемодели и использовать эти данные каждый раз, когда navcontroller создает новыйэкземпляр фрагмента.Таким образом, вы можете сохранить данные, которые вы уже получили.Кроме того, ваша бизнес-логика будет отделена от вашей логики пользовательского интерфейса, поэтому ваши данные также смогут выдержать изменения конфигурации.

Дополнительная информация о моделях представления здесь

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