在Design Philosophy的official 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在技术上没有问题——只是我不建议这么做。