我在这次活动中担任了会话管理员。如果用户已登录,那么它将被重定向到 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()
}
}
}
}
正如其他人所说,每次
onCreate
运行时,仅执行 if
块 或 else
块将被执行。没有办法让它们在一次运行中同时执行 onCreate
。
最有可能的是,您的
MainActivity
被构造了两次:一次是在 Firebase 从本地存储恢复用户之前,一次是在 Firebase 恢复该用户之后。因此,第一次它执行代码的 if
部分,第二次它执行 else
部分。
如果确实发生了这种情况,那么这就是
currentUser
的预期行为。身份验证状态侦听器可能提供前进的道路:侦听 Android 中的身份验证状态。