我正在尝试在我的SettingsFragment中添加一个onPreferenceClickListener,如果这样做的话:

signOutPref.setOnPreferenceClickListener(object: Preference.OnPreferenceClickListener {
           override fun onPreferenceClick(preference: Preference?): Boolean {
                    val signOutIntent = Intent(activity, SignInActivity::class.java)
                    startActivity(signOutIntent)
                    return true
                }
            })

发出警告时,它可以完美工作:



如果我这样写:
signOutPref.setOnPreferenceClickListener {
                val signOutIntent = Intent(activity, SignInActivity::class.java)
                startActivity(signOutIntent)
                return true
            }

这应该是完全一样的东西,并且是最好的方法,我得到了:



return true语句上。

我想念什么?第二种方法与第一种不同吗?如何摆脱这个错误?

最佳答案

在lambda中,最后一条语句自动变为返回值,除非将其返回类型推断为Unit。因此,只需删除return即可。

signOutPref.setOnPreferenceClickListener {
   val signOutIntent = Intent(activity, SignInActivity::class.java)
   startActivity(signOutIntent)
   true
}

该文件说:

07-28 01:55