在片段内执行片段事务是个好主意吗?

Is it a good idea to perform FragmentTransactions inside a fragment?

如标题所示,在片段中执行 FragmentTransaction 是个好主意吗?

我的看法是,FragmentTransaction 需要 containerView id 和 Fragment 在调用 FragmentTransaction.replace() 时膨胀。获取 ID 的 containerView 通常位于 activity 布局中。因此,在 activity 中而不是在 Fragment 中执行 FragmentTransaction 似乎是个好主意。

但是我在使用 SharedElementTransition 作为片段时感到困惑。现在它需要一个 Views 的列表,这将是共享元素。这些视图位于片段中。现在在 Fragment 本身内部执行 FragmentTransaction 似乎合乎逻辑。

谁能指导我如何补偿这两种情况?

fragment 中做 FragmentTransaction 没有错,只要它不是多余的,例如:

"Container" 片段
"Child Fragment" 包含视图寻呼机
查看寻呼机有碎片

在这里,您可以删除子片段并将视图寻呼机放在容器片段上。

对于 fragment 中的 FragmentTransaction,您实际上可以通过调用 getActivity().getSupportFragmentManager() 来交换 fragment 本身。此处,交易发生在 Activity 而不是 fragment。但是,如果您打算使用 FragmentTransaction 交换父级 fragment 的子级,则可以在 fragment.

上使用 getChildFragmentManager()

另外,child fragments实际上被android支持。