如何解决“预期的类型不匹配:推断的类型为GoogleSignInAccount?但预期为GoogleSignInAccount”错误?

时间:2019-08-13 23:48:19

标签: android-studio kotlin google-api google-signin

使用Kotlin设置Google身份验证时,会出现以下错误:“类型推断失败。预期的类型不匹配:推断的类型为GoogleSignInAccount?但预期为GoogleSignInAccount”。错误来自行 “有效帐户:GoogleSignInAccount = completedTask.getResult(ApiException :: class.java)” 这段代码几乎全部来自https://developers.google.com/identity/sign-in/android/sign-in

我检查了此处发布的问题,但问题完全相同,但该问题的答案无法解决我的问题(也不是她的Type mismatch: inferred type is GoogleSignInAccount? but GoogleSignInAccount was expected > Task :app:buildInfoGeneratorFdroidDebug)。

覆盖乐趣onActivityResult(requestCode:Int,resultCode:Int,数据:Intent?){

    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == RC_SIGN_IN) {
        val task: Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(data)
        handleResult (task)
    }else {
        Toast.makeText(this, "Problem in execution order :(", Toast.LENGTH_LONG).show()
    }
}
private fun handleResult (completedTask: Task<GoogleSignInAccount>) {
    try {
        val account: GoogleSignInAccount = completedTask.getResult(ApiException::class.java) #error in this line
        updateUI (account)
    } catch (e: ApiException) {
        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show()
    }
}

如果有人对导致此错误的原因有任何建议,那就太好了。

1 个答案:

答案 0 :(得分:0)

这可能是一个较晚的答案,但希望它可以在将来帮助像我这样的Kotlin初学者。

我遇到了完全相同的错误,并进行了以下修改以解决该问题:

    val account: GoogleSignInAccount? = completedTask.getResult(ApiException::class.java) 
    updateUI (account!!)

您可以参考Kotlin在线文档Null Safety,以了解有关null和“ !!”的详细信息。运算符。