如何在Kotlin Android中防止在Intent期间在新活动中执行方法

时间:2019-04-10 07:39:41

标签: android-intent kotlin

我有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()
    }
}

'''

程序运行正常,但在Intent期间显示了吐司消息“登录失败”。哪个不应该是那样。仅当单击登录按钮时,updateUI函数才必须执行。

如果我这样说,这是另一个问题,当用户在SingUpActivity中注册时,会将用户定向到ProfileActivity。应该是那样的。我希望用户在注册后登录。

如何不在Intent期间而是仅在用户单击登录按钮时执行updateUI函数?

0 个答案:

没有答案