setOnNavigationItemSelectedListener не работает | BottomNavigationView | Kotlin
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_book)
val navView: BottomNavigationView = findViewById(R.id.book_bottom_view)
navView.setOnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.nav_book_home -> {
log("nav_book_home")
}
R.id.nav_book_chapters -> {
log("nav_book_chapters")
}
R.id.nav_book_comments -> {
log("nav_book_comments")
}
}
return@setOnNavigationItemSelectedListener true
}
val tool = findViewById<Toolbar>(R.id.book_toolbar)
setSupportActionBar(tool)
val navController = findNavController(R.id.nav_book_fragment)
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_book_home, R.id.nav_book_chapters, R.id.nav_book_comments
)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
renderFragment()
}
Почему setOnNavigationItemSelectedListener не работает? Должно выводить в консоль сообщение, но она пуста.
Ответы (1 шт):
Автор решения: Sire IMPACTUS
→ Ссылка
Я совершил глупую ошибку. Я добавлял обработчик на фрагмент до того, как объявлял сам фрагмент.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_book)
val navView: BottomNavigationView = findViewById(R.id.book_bottom_view)
val tool = findViewById<Toolbar>(R.id.book_toolbar)
setSupportActionBar(tool)
val navController = findNavController(R.id.nav_book_fragment)
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_book_home, R.id.nav_book_chapters, R.id.nav_book_comments
)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
navView.setOnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.nav_book_home -> {
log("nav_book_home")
}
R.id.nav_book_chapters -> {
log("nav_book_chapters")
}
R.id.nav_book_comments -> {
log("nav_book_comments")
}
}
return@setOnNavigationItemSelectedListener true
}
renderFragment()
}
Перенес обработчик в конец функции и все заработало.