#android #firebase #kotlin
# #Android #firebase #котлин
Вопрос:
Я пытаюсь добавить вход Google в свой kotlin, но я получаю сообщение об ошибке «user_account». В нем говорится: «Несоответствие типа: предполагаемый тип — GoogleSignInAccount? но ожидался GoogleSignInAccount» Как исправить эту ошибку?
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RC_SIGN_IN) {
val task: Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
val user_account = task.getResult(ApiException::class.java)
firebaseAuthWithGoogle(user_account)
} catch (e: ApiException) {
Toast.makeText(this, "Google sign in failed:(", Toast.LENGTH_LONG).show()
}
}
}
Ответ №1:
GoogleSignIn.getSignedInAccountFromIntent
это метод Java, поэтому он может возвращать объект с нулевым значением, но указан ненулевой тип. Поэтому вам следует либо указать свой тип как Task<GoogleSignInAccount?>
, либо использовать один из возможных способов приведения объекта к ненулевому типу.
Подробнее об этом вы можете прочитать здесь.
Комментарии:
1. первый метод не работает, есть ли какой-нибудь другой метод?
2. @BhavnaHaritsa Вы можете попытаться привести объект с нулевым значением к ненулевому типу (см. Ссылку в Ответе) или предоставить более конкретную информацию о появившейся ошибке.
Ответ №2:
Возможно, это поздний ответ, но, надеюсь, он может помочь новичкам Kotlin, таким как я, в будущем.
Я встретил точно такую же ошибку и изменил ее в следующей части, чтобы исправить:
val user_account : GoogleSignInAccount? = task.getResult(ApiException::class.java)
firebaseAuthWithGoogle(user_account!!)
Вы можете обратиться к онлайн-документу Kotlin Null Safety для получения подробной информации о null и операторе «!!».