繁体   English   中英

如何从Activity返回到Fragment通知他退出账号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM