无法从 FragmentResultListener 中的当前目的地找到导航 action/destination 操作

Navigation action/destination action cannot be found from the current destination in FragmentResultListener

如果我在 FragmentResultListener 中调用 findNavController(),导航将无法正常工作,但如果我添加一些延迟,导航将无法正常工作

java.lang.IllegalArgumentException: Navigation action/destination action cannot be found from the current destination

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    ...

    setFragmentResultListener(MyFragment.RESULT_SOME_EVENT) { _, b ->
       
        viewLifecycleOwner.lifecycleScope.launchWhenResumed {
            delay(1000L) // if I remove it then I receive the crash
            findNavController().navigate(
                MyFragmentDirections.actionGoToAnotherFragment()
            )
        }
    }
}

我该如何解决?

我展示了一些带有两个按钮的片段对话框,在用户选择它为片段设置结果后,对话框关闭,然后在父片段上它应该改变目的地 - 转到下一个片段

我明白为什么会这样,导航组件认为片段对话框仍在显示,但我使用 viewLifecycleOwner.lifecycleScope.launchWhenResumed 但它仍然无济于事,直到我添加一些延迟

已通过更改片段对话框内的逻辑修复:

binding.someButton.setOnClickListener {
    setFragmentResult(....)
    dismiss()
}

至:

binding.someButton.setOnClickListener {
    findNavController().navigateUp() // sync method 
    setFragmentResult(....)
}