Как предотвратить выполнение метода в новой активности во время Intent в Kotlin Android - PullRequest
2 голосов
/ 10 апреля 2019

У меня есть SignUpActivity.kt, LoginActivity.kt и ProfileActivity.kt. В SignUpActivity.kt я использую Intent для запуска LoginActivity.kt, а в LoginActivity.kt я использую Intent для запуска ProfileActivity.kt.

SignUpActivity.kt

...
setContentView(R.layout.activity_sign_up)
...

already_have_account_text_view.setOnClickListener {
startActivity(Intent(this, LoginActivity::class.java))
finish()
}

LoginActivity.kt

'' '

...
setContentView(R.layout.activity_login)
...

login_button_login.setOnClickListener {
performLogin()
}

auth.signInWithEmailAndPassword(email, password)
    .addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
            val user = auth.currentUser
            updateUI(user)
        } else {                    
            updateUI(null)
        }                
    }

public override fun onStart() {
    super.onStart()        
 val currentUser = auth.currentUser
 updateUI(currentUser)
}

private fun updateUI(currentUser: FirebaseUser?) {
    if(currentUser != null) {
        startActivity(Intent(this, ProfileActivity::class.java))
    }else {
        Toast.makeText(baseContext, "Login failed", 
        Toast.LENGTH_SHORT).show()
    }
}

'' '

Программа работает правильно, но во время Намерения появляется сообщение о том, что «Ошибка входа в систему». Который не должен быть таким. Функция updateUI должна выполняться только при нажатии кнопки входа в систему.

Еще одна проблема, если я позволю этому так, когда пользователь регистрируется в SingUpActivity, пользователь будет перенаправлен на ProfileActivity. Который должен быть таким. Я хочу, чтобы пользователь вошел в систему после регистрации.

Как я могу выполнить функцию updateUI не во время Намерения, а только когда пользователь нажимает кнопку входа в систему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...