【问题标题】:How to send information to parent Fragment?如何向父片段发送信息?
【发布时间】:2026-01-14 17:00:02
【问题描述】:

我有由MainActivity 创建的Fragment A。在这个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()))

【问题讨论】:

    标签: android android-fragments fragmentmanager


    【解决方案1】:

    在片段 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()
    

    【讨论】:

    • 我只是使用 fragmentManager 来移除这个子 Fragment 而不是 childFragmentManager。忘记在删除函数中更改变量
    • 好的,最后你做到了:D
    最近更新 更多