>

안드로이드 앱에서 사용자의 이메일을 업데이트하려고합니다. 새 이메일을 사용할 수 있으면 모든 것이 잘 작동합니다. 그렇지 않은 경우-onFailureListener가 호출 중입니다. 그러나이 리스너에서 예외를 얻으려고하면 null 이며이 예외 유형을 얻을 수 없습니다. 왜? 아래 코드입니다.

private fun reauthenticateAndUpdateEmail(password: String, newEmail: String){
    val credentials = EmailAuthProvider.getCredential(auth.currentUser!!.email!!, password)
    auth.currentUser!!.reauthenticate(credentials).addOnCompleteListener(object : OnCompleteListener<Void> {
        override fun onComplete(p0: Task<Void>) {
            if (p0.isSuccessful) {
                auth.currentUser!!.updateEmail(newEmail).addOnSuccessListener {
                    interractor.emailChanged()
                }.addOnFailureListener { exception ->
                    interractor.emailChanged(false, handleException(p0.exception))
                }
            } else interractor.emailChanged(false, handleException(p0.exception))
        }
    })
}
private fun handleException(exception: Exception?): String{
    //exception is null
    when(exception){
        is FirebaseAuthUserCollisionException -> return "E-mail address is not available"
        is FirebaseNetworkException -> return "No network"
        else -> return "Try again later."
    }
}

미리 감사하며 즐거운 하루 보내세요.

  • 답변 # 1

    바꾸어보십시오

    .addOnFailureListener { exception ->
                        interractor.emailChanged(false, handleException(p0.exception))
                    }
    
    

    with

    .addOnFailureListener { exception ->
                        interractor.emailChanged(false, handleException(exception))
                    }
    
    

    handleException 메소드를 보호 할 수도 있습니다 : 바꾸기

       when(exception){
            is FirebaseAuthUserCollisionException -> return "E-mail address is not available"
            is FirebaseNetworkException -> return "No network"
            else -> return "Try again later."
        }
    
    

    with

       exception?.let {
              when(it){
                 is FirebaseAuthUserCollisionException -> return "E-mail address is not available"
                 is FirebaseNetworkException -> return "No network"
                 else -> return "Try again later."
              }
        }
    return "Unknown error"
    
    

  • 이전 javascript - 클릭하여 숨길 때까지 보더 오버 플로우 및 축소 가능
  • 다음 레일 - v 모델 vuejs 속성