android 从另一个片段返回到片段后未调用FragmentResultListener

plicqrtu  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(137)

我在项目中遇到setFragmentResultListener回调问题。你可以想象有一个活动,它的片段是A。在片段A中,我设置了一个FragmentResultListener,如下所示

setFragmentResultListener(AddImageDialogFragment::class.java.simpleName, this) { _, bundle -> }

以及一个按钮,单击该按钮将打开AddImageDialogFragment。这是打开对话框的代码

AddImageDialogFragment.newInstance().show(parentFragmentManager, null)

在对话框中,我使用以下代码将result设置为FragmentA

setFragmentResult(this::class.java.simpleName, bundleOf())
  • 问题是你可以看到下面的2个案例 *
    • 案例1(运行良好)**

1.将片段B添加到已包含片段A的Activity
1.弹出回栈到片段A
1.从片段A中添加打开的AddImageDialogFragment并调用setFragmentResult-> FragmentResultListener仍然可以正常工作

    • 情况2(不工作)**

1.将片段B添加到已包含片段A的Activity
1.将片段C添加到已包含片段A和B的Activity
1.弹出回栈到片段C-> B-> A
1.从片段A添加open AddImageDialogFragment,调用setFragmentResult->FragmentResultListener未被调用
有人知道我的代码发生了什么吗?我真的很感谢你的帮助!

insrf1ej

insrf1ej1#

最近我意识到问题是fragmentManager与每个片段上下文不匹配,这导致了我的代码中的一些混乱。对于在fragment内启动fragment,它将是childFragmentManager而不是parentFragmentManager

相关问题