首页 > 解决方案 > 如何修复“预期类型不匹配:推断类型为 GoogleSignInAccount?但预期为 GoogleSignInAccount”错误?

问题描述

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

我已经检查了此处发布的问题与完全相同的问题,但该问题的答案无法解决我的问题(她的类型不匹配:推断的类型是 GoogleSignInAccount?但 GoogleSignInAccount 是预期的>任务:app:buildInfoGeneratorFdroidDebug)。

覆盖乐趣 onActivityResult(requestCode: Int, resultCode: Int, data: 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()
    }
}

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

标签: android-studiokotlingoogle-apigoogle-signin

解决方案


这可能是一个迟到的答案,但希望它可以帮助像我这样的 Kotlin 初学者。

我遇到了完全相同的错误,并修改为以下部分以修复它:

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

关于 null 和 "!!" 的详细信息可以参考 Kotlin 在线文档Null Safety 操作员。


推荐阅读