如何向父片段发送信息?
How to send information to parent Fragment?
我有 Fragment A
由 MainActivity
创建。在这个 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()
我有 Fragment A
由 MainActivity
创建。在这个 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()