如何向父片段发送信息?

How to send information to parent Fragment?

我有 Fragment AMainActivity 创建。在这个 Fragment A 里面是 container View。我可以在 Fragment A 中创建另一个 Fragment B 并将其放入此容器中。

我想要实现的是将信息(字符串)从 Fragment B 发送回 Fragment A

这是否可能,因为我找到的唯一选择是重新创建 Fragment A,但这会复制旧的 Fragment A 及其内容。片段 A(第一个)和片段 A(第二个)彼此重叠,如果您一遍又一遍地重复此过程,这可能会导致严重的内存问题。

Fragment A 中创建 Fragment B 的示例:

fragmentManager?.let { fm ->
                val ft = fm.beginTransaction()
                val sh = FragmentB(info)
                fragB = sh
                ft.add(R.id.container, sh)
                ft.commitAllowingStateLoss()
            }

退出 Fragment B 并再次开始 Fragment A

mainActivity?.startFragment(FragmentA(item.js.toString()))

在片段 A 中,您应该使用 childFragmentManager 而不是 fragmentManager

childFragmentManager.let { fm ->
                val ft = fm.beginTransaction()
                val sh = FragmentB(info)
                fragB = sh
                ft.add(R.id.container, sh)
                ft.commitAllowingStateLoss()
            }

在片段 B 中,您可以通过

获取对片段 A 的引用
(parentFragment as FragmentA).someMethod()