假设我将在一个活动(Action1Fragment
)中使用多个片段(Action2Fragment
,ActionActivity
等)。我想访问一些活动对象的元素,或者调用ActionActivity
的一些方法。它通常提供给create a event callback。如果我在ActionActivity
内保留对Action1Fragment
的引用而不是保留对CallBackInterface
实际执行的ActionActivity
的引用,该怎么办,因为我将仅在特定范围内使用这些片段活性。
我对于Activity可能已经死亡的想法感到困惑,而界面的引用可能仍然存在(当我再次阅读它时听起来很荒谬,但如果我设法解释自己就可以了。)
答案 0 :(得分:1)
Android Developer教程建议您在片段上使用回调接口。承载该片段的活动必须实现回调接口。片段执行getActivity()
并将其转换为回调接口,然后进行回调。
这是推广更模块化设计的推荐方法。如果你的片段只能在一个活动中工作,那就没关系了。但是如果你想制作更多可以被不同活动使用的通用片段,那么上面的设计模式就开始变得有用了。 (例如:人员片段和公司片段内的电话片段。)
假设您以另一种方式执行此操作:片段执行getActivity()
并将其强制转换为PersonActivity
。然后,该片段可以访问PersonActivity的所有公共方法。但是当你需要其他活动来使用片段时,这种设计模式会变得更加难看。然后必须将片段更改为首次尝试并转换为PersonActivity,如果抛出,请尝试CompanyActivity
。
推荐的设计模式基本上为您提供了一种方法,使活动与片段兼容,而不是相反。片段只知道回调接口,而不知道任何活动本身。这些活动确实知道了片段,因为它们实现了回调接口,但是他们已经知道它,因为它们构造并初始化了它的实例。
这有意义吗?