4

官方 Fragment 指南的设计哲学部分,它说:

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

但在其Example中,TitlesFragment类(extends ) 在其方法ListFragment中直接引用DetailsFragment类 (extends )FragmentshowDetails()findFragmentById()

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

并调用DetailsFragment类的newInstance()方法。

details = DetailsFragment.newInstance(index);

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

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

4

1 回答 1

4

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

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

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

话虽如此,代码AFAIK在技术上没有任何问题——这不是我推荐的做法。

于 2013-03-20T23:50:53.397 回答