创建事件回调或片段中的活动本身有什么区别?

时间:2014-10-13 08:14:32

标签: android android-fragments

假设我将在一个活动(Action1Fragment)中使用多个片段(Action2FragmentActionActivity等)。我想访问一些活动对象的元素,或者调用ActionActivity的一些方法。它通常提供给create a event callback。如果我在ActionActivity内保留对Action1Fragment的引用而不是保留对CallBackInterface实际执行的ActionActivity的引用,该怎么办,因为我将仅在特定范围内使用这些片段活性。

我对于Activity可能已经死亡的想法感到困惑,而界面的引用可能仍然存在(当我再次阅读它时听起来很荒谬,但如果我设法解释自己就可以了。)

1 个答案:

答案 0 :(得分:1)

Android Developer教程建议您在片段上使用回调接口。承载该片段的活动必须实现回调接口。片段执行getActivity()并将其转换为回调接口,然后进行回调。

这是推广更模块化设计的推荐方法。如果你的片段只能在一个活动中工作,那就没关系了。但是如果你想制作更多可以被不同活动使用的通用片段,那么上面的设计模式就开始变得有用了。 (例如:人员片段和公司片段内的电话片段。)

假设您以另一种方式执行此操作:片段执行getActivity()并将其强制转换为PersonActivity。然后,该片段可以访问PersonActivity的所有公共方法。但是当你需要其他活动来使用片段时,这种设计模式会变得更加难看。然后必须将片段更改为首次尝试并转换为PersonActivity,如果抛出,请尝试CompanyActivity

推荐的设计模式基本上为您提供了一种方法,使活动与片段兼容,而不是相反。片段只知道回调接口,而不知道任何活动本身。这些活动确实知道了片段,因为它们实现了回调接口,但是他们已经知道它,因为它们构造并初始化了它的实例。

这有意义吗?