[英]How to return from Activity to Fragment to notify him about the exit from the account
我有 2 个活动。 在第一个上,我有一个 fragmentContainerView,我在其中使用了多个片段(启动、登录、创建帐户)。 在第二个活动中,我有一个菜单抽屉。 在这个菜单抽屉中,我有一个 TextView,点击它用户应该注销帐户并返回到 Splash。 Splash 有一个 nextBTN 按钮。 如果用户未被授权,那么他将被发送到登录或创建帐户。 如果用户已经被授权,那么他将被发送到 2 Activity。 要登录帐户或创建帐户,我使用 Firebase 服务。
问题:当用户按下注销按钮时,他被发送到 Splash,但首先 Activity 不知道他已注销。 还有一张支票
auth.currentUser != null
每次单击 nextBTN 时,它都会将用户发送到 2 个活动。
我决定检查并在 Splash 上添加另一个带有帐户退出代码的按钮,事实上,如果您首先使用 Splash 上的帐户退出按钮,然后使用 nextBTN,那么在这种情况下,它会建议登录您的帐户或创建一个帐户。
我如何从 Activiti 中告诉 Splash(Fragment) 用户已经退出账户?
代码 TextView(注销)有 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)
}
}
PS 在 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()
}
})
}
}
}
}
登录代码(片段):
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.