官方文件说:


  通常,您会希望一个Fragment与另一个Fragment进行通信,例如,根据用户事件更改内容。所有片段到片段的通信都是通过关联的活动完成的。两个片段永远不要直接通信。


但是,我遇到了多篇文章,都在讨论使用setTargetFragment()将数据从DialogFragment发送到调用者片段。

对我来说,这似乎是一种反模式,因为这可以最大程度地减少进行一项活动的需要。

谁能解释介绍setTargetFragment()和getTargetFragment()背后的原因?

最佳答案

架构并非总是100%干净。数十个开发人员编写了与Android一样大的文件,每个开发人员都有自己的观点。有时,这些观点有所不同,有时甚至出现在未曾怀疑的API调用中或文档不匹配。

同样,同级片段和子片段之间也有区别。碎片对兄弟姐妹一无所知。但是,如果一个片段需要启动另一个片段并处理其结果(就像它可能是一个活动一样),那么该片段直接执行它而无需涉及其活动是完全可以接受的。这就是setTargetFragment的用途。

08-05 08:00