两个 if-else 块都被执行

问题描述 投票:0回答:1

我在这次活动中担任了会话管理员。如果用户已登录,那么它将被重定向到 Home Activity,如果没有,则重定向到片段 EmailSignIn 但不知何故,当用户登录时, if else 的两个块都会被执行。请查看这一点。

class MainActivity : AppCompatActivity() {
private lateinit var mAuth: FirebaseAuth


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    mAuth = FirebaseAuth.getInstance()

    val currentUser = mAuth.currentUser
    if (currentUser != null) {
        val intent = Intent(this@MainActivity, HomeActivity::class.java)
        startActivity(intent)
    } else{
        val signIn = EmailSignIn()
        supportFragmentManager.beginTransaction().apply {
            replace(R.id.logFragment, signIn)
            commit()
        }
    }
}

}

android kotlin firebase-authentication
1个回答
0
投票

正如其他人所说,每次

onCreate
运行时,仅执行
if
else
块将被执行。没有办法让它们在一次运行中同时执行
onCreate

最有可能的是,您的

MainActivity
被构造了两次:一次是在 Firebase 从本地存储恢复用户之前,一次是在 Firebase 恢复该用户之后。因此,第一次它执行代码的
if
部分,第二次它执行
else
部分。

如果确实发生了这种情况,那么这就是

currentUser
的预期行为。身份验证状态侦听器可能提供前进的道路:侦听 Android 中的身份验证状态

© www.soinside.com 2019 - 2024. All rights reserved.