在Design Philosophy的official Fragment guide部分,它说:
您应该将每个片段设计为模块化和可重用的活动组件。也就是说,因为每个片段使用自己的生命周期回调定义自己的布局和自己的行为,所以可以在多个活动中包含一个片段,因此您应该设计为重用,避免直接操作另一个片段中的一个片段
但在其Example中,TitlesFragment
类(扩展ListFragment
)直接引用其DetailsFragment
类(扩展Fragment
)showDetails()
} findFragmentById()
DetailsFragment details = (DetailsFragment)
getFragmentManager().findFragmentById(R.id.details);
并调用DetailsFragment
类的newInstance()
方法。
details = DetailsFragment.newInstance(index);
这是一种糟糕的编码风格吗?
相比之下,Basic Training Material似乎在编码风格上做得更好。它使用Interface for Fragment-to-Activity通信。
答案 0 :(得分:4)
恕我直言,是的。恕我直言,片段既不知道也不关心活动管理的其他片段。片段可能关心嵌套片段(通过这是一种糟糕的编码风格吗?
getChildFragmentManager()
的子片段),但不是可能的对等片段。
在引用示例的情况下,TitlesFragment
不应该关心它是以单窗格还是双窗格模式显示。活动应该关心这一点。这会隔离活动中与屏幕大小相关的所有代码 - TitlesFragment
可能无视屏幕大小。
话虽如此,代码AFAIK在技术上没有任何问题 - 但这并不是我推荐的方式。