在findNavController()。popBackStack()

时间:2020-03-27 23:39:33

标签: android-fragments kotlin android-navigation android-architecture-navigation

我有一个由NavgitaionComponents bottomNavigationView管理的配置文件片段,问题是我要从此处注销用户,我可以这样做

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        Glide.with(requireContext()).load(FirebaseAuth.getInstance().currentUser?.photoUrl).centerCrop().placeholder(GlideProgress.setupCircularProgress(requireContext())).into(profile_photo)
        txt_profile_name.text = FirebaseAuth.getInstance().currentUser!!.displayName
        txt_email.text = FirebaseAuth.getInstance().currentUser!!.email
        btn_signout.setOnClickListener {
            showSignOutProgress()
            AuthUI.getInstance().signOut(requireContext()).addOnSuccessListener {
                FirebaseAuth.getInstance().signOut()
                startActivity(Intent(requireContext(),MainActivity::class.java))
                findNavController().popBackStack()
            }.addOnFailureListener {
                hideSignOutProgress()
            }
        }
    }

我的MainActivity会处理要浏览的导航图,具体取决于用户是否登录,如果登录,它将进入main_navigation图,如果未登录,则将进入

现在,当我成功注销后开始维护时,当我执行findNacController()。popBackStack()时,我希望当前配置文件片段会弹出并弹出所有后退堆栈片段,所以在我返回的登录片段中,我无法返回我的个人资料片段

但是这发生了

无法暂停活动FragmentManager已在执行 交易

1 个答案:

答案 0 :(得分:0)

解决了这个问题,我需要完成包含主导航的整个活动,而不仅仅是弹出配置文件片段

已添加

requireActivity().finish()

代替

findNavController().popBackStack()
相关问题