Android DialogFragment 导航 Crash/Issue

Android DialogFragment Navigation Crash/Issue

如果我在导航到另一个对话框时不关闭对话框,我有一个对话框导航图可以正常工作。但是,我导航的对话框并没有从屏幕上消失。如果我在浏览应用程序时关闭它们会崩溃。

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        val navHostFragment = activity?.supportFragmentManager?.findFragmentById(R.id.dialogNavigation) as NavHostFragment
        val navController = navHostFragment.navController
        super.onViewCreated(view, savedInstanceState)
        binding.btnNext.setOnClickListener{
            navController.navigate(R.id.action_retryConnectionDialog_to_batteryDialog)
            dismiss()
        }
    }

这是产生此类反应的代码部分(在 RetryConnectionDialog.kt 内),如有任何见解,我们将不胜感激

根据未提供的导航图,这可能是:

navController.navigateUp()
navController.navigate(R.id.action_retryConnectionDialog_to_batteryDialog)

如果您想在前往新目的地时关闭对话框,您必须在 action_retryConnectionDialog_to_batteryDialog 上使用 popUpTo 作为 navigate() 操作的一部分 - dismiss 是一个异步操作,仅在您的 navigate() 调用发生后才发生,这意味着将其从后台堆栈中删除为时已晚(因为您的新 BatteryDialog 已经堆叠在它上面) .

    <action
        android:id="@+id/action_retryConnectionDialog_to_batteryDialog"
        app:destination="@id/batteryDialog"
        app:popUpTo="@+id/retryConnectionDialog"
        app:popUpToInclusive="true"/>