Android 官方的片段开发人员指南是否自相矛盾?

Android 官方的片段开发人员指南是否自相矛盾?,android,interface,android-fragments,Android,Interface,Android Fragments,在报告的一节中,它说: 您应该将每个片段设计为一个模块化的、可重用的活动组件。也就是说,因为每个片段都定义了自己的布局和自己的行为以及自己的生命周期回调,所以您可以在多个活动中包含一个片段,因此您应该为重用而设计,并且避免直接从另一个片段操作一个片段 但是在its中,TitlesFragment类(extendsListFragment)通过findFragmentById()直接引用其showDetails()方法中的DetailsFragment类(extendsFragment) 并调用D

在报告的一节中,它说:

您应该将每个片段设计为一个模块化的、可重用的活动组件。也就是说,因为每个片段都定义了自己的布局和自己的行为以及自己的生命周期回调,所以您可以在多个活动中包含一个片段,因此您应该为重用而设计,并且避免直接从另一个片段操作一个片段

但是在its中,
TitlesFragment
类(extends
ListFragment
)通过
findFragmentById()直接引用其
showDetails()
方法中的
DetailsFragment
类(extends
Fragment

并调用
DetailsFragment
class的
newInstance()
方法

details = DetailsFragment.newInstance(index);
这是一种糟糕的编码风格吗

相比之下,在编码风格上,该方法似乎做得更好。它使用一个接口进行片段到活动的通信

这是一种糟糕的编码风格吗

嗯,是的。依我看,一个片段既不应该知道也不应该关心由活动管理的其他片段。片段可能关心嵌套片段(通过
getChildFragmentManager()
的子片段),但不关心可能的对等片段

在引用的示例中,
TitlesFragment
不应关心它是以单窗格模式还是双窗格模式显示。活动应该关注这一点。这将隔离活动中所有与屏幕大小相关的代码--
TitlesFragment
可以忽略屏幕大小


话虽如此,代码AFAIK在技术上没有什么问题——只是我不建议这样做。

我怀疑这可能只是试图保持示例简单和小的产物。我还想,第一行只是引用另一个
片段
对象,它在下面的行中正确地检查了null。对于第二个,它只是从类中调用一个静态方法。毫无疑问,基础培训材料中的方式更为整洁,结构也更为完善。但这两行是否已经意味着操纵另一个
片段
对象?
details = DetailsFragment.newInstance(index);