碎片上的装饰图案

时间:2014-05-23 13:14:51

标签: android android-fragments decorator

我创建了2个Fragment基类,每个基类都有2个interfaces提供的方法。现在,我想通过使用装饰器模式从两个接口获得第三个Fragment。既然只能在子类Fragment 上使用空构造函数,我该如何实现呢?

PS:再一次,使用装饰器模式

1 个答案:

答案 0 :(得分:0)

好吧,

正如你所说,你需要一个空的构造函数。这是有原因的,因为框架会在某些情况下实例化片段(布局中的膨胀,配置更改后的加载)。

除了默认的no-arg之外,您还可以创建另一个构造函数,但如果框架重新创建了您的片段(因为它使用了无参数构造函数),则传递的参数将会松散。因此,您的装饰器将被实例化而不需要装饰片段。

这样:

newInstance(Fragment toDecorate){
   Bundle b = new Bundle();
   b.putFragment???

也会失败,因为你不能将Fragment序列化为Bundle,而且因为框架管理它们。

我能想到的唯一方法是子类化,它实际上是Decorator模式的替代品。与子类化相比,使用Decorator会获得什么?你真的需要能够在运行时添加/修改片段的功能吗?

PS:这不是一个真正的答案,因为你说你想要一个带有Decorator模式的解决方案。它建议考虑将子类化作为替代方案。