Dan*_*ele 3 android preferences kotlin
我正在尝试在我的 SettingsFragment 中添加一个 onPreferenceClickListener ,如果我这样做:
signOutPref.setOnPreferenceClickListener(object: Preference.OnPreferenceClickListener {
override fun onPreferenceClick(preference: Preference?): Boolean {
val signOutIntent = Intent(activity, SignInActivity::class.java)
startActivity(signOutIntent)
return true
}
})
Run Code Online (Sandbox Code Playgroud)
它在发出警告的同时完美运行:
使用属性访问语法
而如果我这样写:
signOutPref.setOnPreferenceClickListener {
val signOutIntent = Intent(activity, SignInActivity::class.java)
startActivity(signOutIntent)
return true
}
Run Code Online (Sandbox Code Playgroud)
这应该是完全相同的事情,这是最好的方法,我得到:
布尔文字不符合预期的类型 Unit
在return true
声明上。
我错过了什么?第二种方法与第一种方法不同吗?我如何摆脱这个错误?
在 lambda 中,最后一个语句会自动成为返回值,除非它的返回类型被推断为Unit
。所以只需删除return
.
signOutPref.setOnPreferenceClickListener {
val signOutIntent = Intent(activity, SignInActivity::class.java)
startActivity(signOutIntent)
true
}
Run Code Online (Sandbox Code Playgroud)
文档说:
一个 lambda 表达式总是被花括号包围,完整语法形式的参数声明放在花括号内并有可选的类型注释,主体在 -> 符号之后。如果lambda 的推断返回类型不是
Unit
,则将 lambda 主体内的最后一个(或可能是单个)表达式视为返回值。
归档时间: |
|
查看次数: |
2403 次 |
最近记录: |