【发布时间】:2019-02-26 08:58:34
【问题描述】:
是否可以让我的导航组件在单击底部导航项时不创建新片段(但使用现有片段)?
我只想使用导航组件。
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
}
【问题讨论】:
-
use existing one片段是什么意思?对所有导航项使用相同的片段?还是只创建一次片段,导航更改后不再创建它们? -
创建一次片段,不再创建它们
-
猜是因为
navController.popBackStack。您是否尝试改用 navigate 方法?
标签: android kotlin android-architecture-navigation