我正在 Kotlin 中开发一个应用程序,并使用 BottomNavigationView 通过 ViewPager 在不同片段之间导航。我正在尝试实现 setOnNavigationItemSelectedListener 方法来在选择导航项时更改 ViewPager 页面。
但是,我遇到错误:“将 lambda 表达式返回类型更改为 Unit”。我不确定为什么会出现这个错误,因为我在网上找到的类似代码示例没有这个问题。这是错误的屏幕截图:
有趣的是,当我使用 setOnNavigationItemReselectedListener 而不是 setOnNavigationItemSelectedListener 时,错误消失,但我需要 setOnNavigationItemSelectedListener 来进行项目选择,而不是重新选择。
问题:
为什么我在使用 setOnNavigationItemSelectedListener 时收到“将 lambda 表达式返回类型更改为 Unit”错误?
如何解决此错误并正确实现侦听器?
任何帮助将不胜感激!
在 lambda 中,在
true
语句之后添加 when
。 这个函数式接口需要你返回一个布尔值。 lambda 的最后一个表达式是返回值。
对于重复性较少的代码,可以考虑修改如下:
bottomNavigationView.setOnNavigationItemSelectedListener {
val page = when (it.itemId) {
R.id.navigator_main -> 0
R.id.navigator_search_food -> 1
R.id.navigator_list_of_week -> 2
R.id.navigator_for_students -> 3
else -> -1
}
viewPager.setCurrentItem(page)
true
}