如何从Activity返回到Fragment以通知他退出帐户



我有2个活动。在第一个我有一个fragmentContainerView,我使用多个片段(飞溅,登录,创建帐户)。在第二个活动中,我有一个菜单抽屉。在这个菜单抽屉中,我有一个TextView,在点击它时,用户应该退出帐户并返回到Splash。Splash有一个next tbtn按钮。如果用户未被授权,那么他将被发送到"登录"或"创建帐户"。如果用户已经被授权,那么他将被发送到2活动。登录到一个帐户或创建一个帐户,我使用Firebase服务。

问题:当用户按下Sign Out按钮时,他被发送到Splash,但first Activity不知道他已注销。这里有一个支票

auth.currentUser != null 

每次点击nextBTN时,它都会将用户发送到2个活动

我决定检查并在Splash上添加另一个带有帐户退出代码的按钮,事实上,如果您首先使用Splash上的帐户退出按钮,然后是next tbtn,那么在这种情况下,它建议登录到您的帐户或创建一个帐户。

我如何告诉Splash(Fragment)从Activiti,用户已注销帐户?

代码TextView (Sign Out)与2个活动:

fun onClickSignOut (view: View){
auth.signOut()
finish()
}

检查用户当前是否登录的按钮代码(Fragment Splash):

binding.nextBTN.setOnClickListener {
if (auth.currentUser != null){
navController.navigate(R.id.action_fragment_Splash_to_mainMenuActivity)
} else {
navController.navigate(R.id.action_fragment_Splash_to_fragment_Splash2)
}
}

注:在Splash2我有2个按钮重定向到登录或创建帐户。

帐号创建代码(片段):

private fun init(view: View){
navControl = Navigation.findNavController(view)
auth = FirebaseAuth.getInstance()
}
private fun registerEvents(){
binding.createAccBTN.setOnClickListener {
val email = binding.emailET.text.toString().trim()
val pass = binding.passwordET.text.toString().trim()
val retypePass = binding.retypePasswordET.text.toString().trim()
if (email.isNotEmpty() && pass.isNotEmpty() && retypePass.isNotEmpty()){
if (pass == retypePass){
auth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener(
OnCompleteListener {
if (it.isSuccessful){
Toast.makeText(context , "Registered Successfully" , Toast.LENGTH_SHORT).show()
navControl.navigate(R.id.action_fragment_CreateAcc_to_mainMenuActivity)
} else {
Toast.makeText(context , it.exception?.message , Toast.LENGTH_SHORT).show()
}
})
}
}
}
}

Sign In code (Fragment):

binding.signInBTN.setOnClickListener {
val email = binding.emailET.text.toString().trim()
val pass = binding.passwordET.text.toString().trim()
if (email.isNotEmpty() && pass.isNotEmpty()){
auth.signInWithEmailAndPassword(email, pass).addOnCompleteListener(
OnCompleteListener {
if (it.isSuccessful){
Toast.makeText(context , "Login Successfully" , Toast.LENGTH_SHORT).show()
navControl.navigate(R.id.action_fragment_SignIn_to_mainMenuActivity)
} else {
Toast.makeText(context , it.exception?.message , Toast.LENGTH_SHORT).show()
}
})
}
}

我将非常感谢任何帮助。

感谢大家的建议。但是我改了一行就解决了。

auth.signOut(),变为FirebaseAuth.getInstance().signOut()

最新更新