将 lambda 表达式 return 类型更改为 Unit
Change lambda expression return type to Unit
我使用的是 Kotlin 语言,我的应用程序中有底部导航视图。我想实现 setOnNavigationItemSelectedListener 方法来更改我的 viewPager。
然而,当我实施它时,它给我错误,即 'change lambda expression return type to Unit' 。我不明白为什么。我在网上查过,有些人和我使用相同的行代码,但他们没有出错。我会分享错误的截图。
此外,当我将 setOnNavigationItemSelectedListener 更改为 etOnNavigationItemReselectedListener 时,它也没有报错。但是我需要 selectItemListener 而不是 Reselect 。
这是我的方法。
在您的 lambda 中添加 true
,就在 when
语句之后。 This functional interface 要求您 return 一个布尔值。 lambda 的最后一个表达式是 return 值。
对于重复性较低的代码,可以考虑修改如下:
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
}
我使用的是 Kotlin 语言,我的应用程序中有底部导航视图。我想实现 setOnNavigationItemSelectedListener 方法来更改我的 viewPager。
然而,当我实施它时,它给我错误,即 'change lambda expression return type to Unit' 。我不明白为什么。我在网上查过,有些人和我使用相同的行代码,但他们没有出错。我会分享错误的截图。
此外,当我将 setOnNavigationItemSelectedListener 更改为 etOnNavigationItemReselectedListener 时,它也没有报错。但是我需要 selectItemListener 而不是 Reselect 。
这是我的方法。
在您的 lambda 中添加 true
,就在 when
语句之后。 This functional interface 要求您 return 一个布尔值。 lambda 的最后一个表达式是 return 值。
对于重复性较低的代码,可以考虑修改如下:
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
}