Design Philosophyofficial Fragment guide部分,它显示:
您应该将每个片段设计为模块化的、可重用的活动组件。也就是说,因为每个片段都用自己的生命周期回调定义了自己的布局和行为,所以您可以在多个活动中包含一个片段,因此您应该为重用而设计,并避免直接从另一个片段中操作一个片段。
但在其Example中,TitlesFragment类(extendsListFragment)直接引用其DetailsFragment方法中的Fragment类(extendsshowDetails())。

DetailsFragment details = (DetailsFragment)
        getFragmentManager().findFragmentById(R.id.details);

调用类的方法。
details = DetailsFragment.newInstance(index);

这是一种糟糕的编码方式吗?
相比之下,Basic Training Material在编码风格上似乎做得更好。它使用一个接口进行片段到活动的通信。

最佳答案

这是一种糟糕的编码方式吗?
嗯,是的。imho,片段既不应该知道也不应该关心活动管理的其他片段。片段可能关心嵌套片段(通过getChildFragmentManager()的子片段),但不可能是对等片段。
在引用的示例中,TitlesFragment不应关心它是以单窗格模式还是双窗格模式显示。活动应该关心这个问题。这将隔离活动中所有与屏幕大小相关的代码--TitlesFragment可能会忽略屏幕大小。
也就是说,代码afaik在技术上没有问题——只是我不建议这么做。

10-05 17:47