簡體   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