Итак, я слежу за видео и документацией Google, пытаясь реализовать вход пользователя с помощью Firebase в приложении android. Это работает, поэтому, чтобы попытаться привести в порядок (и помочь мне повторно использовать код в другом проекте), у меня есть много кода входа в систему, перемещенного в отдельный файл .kt, и я использовал приведенную ниже функцию для создания нового пользователя.
//in LoginActivity.kt
fun createNewUser(email:String, password:String) :Boolean{
var success:Boolean = false
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
success = true
// Sign in success, update UI with the signed-in user's information
Log.d(null, "createUserWithEmail:success")
val user = auth.currentUser
//updateUI(user)
} else {
// If sign in fails, display a message to the user.
Log.w(null, "createUserWithEmail:failure", task.exception)
//Toast.makeText(baseContext, "Authentication failed.",Toast.LENGTH_SHORT).show()
//updateUI(null)
success = false
}
}
return success
}
Проблема, с которой я столкнулся, заключается в том, что логическое значение «success» не обновляется при создании учетной записи, журнал с сообщением «Success», похоже, работает нормально. Я попытался изменить начальное состояние success
с false
на true
, и это вернуло true
, как ожидалось, и мой код, смотрящий на результат этого, работал нормально.
Вот где он вызывается from, как я уже сказал, тосты работают нормально, но возвращается значение success
всегда то, как оно было инициализировано.
//in MainActivity.kt
var login = LoginActivity()
if(login.createNewUser(email,password)) {
Toast.makeText(this,"I got this far",Toast.LENGTH_SHORT).show()
uploadImageToFirebase()
}
else{
Toast.makeText(this,"I didnt get this far",Toast.LENGTH_SHORT).show()
}
Спасибо за любую помощь :)