因此,我尝试在片段Home
中创建“注销”按钮,但是,每次用户注销时,该应用程序将崩溃,并且由文档快照引起。
这是我的文档快照代码。
private fun loadProfile() {
val user = mAuth!!.currentUser
if (user != null) {
...//loading profile code
}
val uid = user.uid
documentReference = db!!.collection("users").document(uid)
documentReference!!.addSnapshotListener { documentSnapshot, e ->
//this if returning null after user signout
if (documentSnapshot!!.exists()) {
if (documentSnapshot.get(KEY_HP) != null) {
...//loading profile code
}else {
val intent = Intent(this@Home.activity, LoginActivity::class.java)
startActivity(intent)
}
}
} else {
val intent = Intent(this@Home.activity, LoginActivity::class.java)
startActivity(intent)
}
}
如您所见,我在所有地方都拼命添加else
,但这无济于事。
这是我的注销方法
private fun signOut() {
mAuth!!.signOut()
val intent = Intent(this@Home.activity, LoginActivity::class.java)
startActivity(intent)
}
因此,我需要在不崩溃的情况下正确注销
答案 0 :(得分:0)
FirebaseAuth.getInstance().signOut();
使用此按钮从Firebase注销。然后,如果您尝试对已登录用户执行任何操作,将无法执行操作,您将不得不再次登录。
答案 1 :(得分:0)
未来参考
在使用“注销”方法进行了几天的努力之后,我意识到,如果活动中附加了快照侦听器,请确保按照here的说明处理并返回错误,否则您可能会遇到一些权限错误并崩溃。