Решение 1:
В вашем меню (bottom_navigation_menu) установите тот же идентификатор, что и идентификатор вашего фрагмента, сгенерированный навигационным графиком, как показано ниже:
<menu xmlns:android="http://schemas.android.com. /apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/firstFragment"
android:title="First fragment" />
<item
android:id="@+id/secondFragment"
android:title="Second fragmnet" />
<item
android:id="@+id/thirdFragment"
android:title="Third fragment" />
</menu>
Вы наделеныНе нужно устанавливать программно, потому что метод
NavigationUI.setupWithNavController(bnw, navController);
сделает работу.
Решение 2: Не рекомендуется и не нужно
Но если вы хотите программировать, сделайте, как показано ниже:
private lateinit var navController: NavController
private val onNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.navigation_home -> {
navController.navigate(R.id.firstFragment)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_dashboard -> {
navController.navigate(R.id.secondFragment)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_notifications -> {
Toast.makeText(this,R.string.title_notifications,Toast.LENGTH_SHORT).show()
navController.navigate(R.id.thirdFragment)
return@OnNavigationItemSelectedListener true
}
}
false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
navController = findNavController(R.id.nav_controller_fragment)
navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
}