我正在我的应用程序中实现片段。参考这个文档,我应该使用它getActivity()
来访问活动方法,而且(在下一段中)我应该在片段中声明一个接口并让活动实现它。现在,第二种方式用于事件之类的回调方法,但我也可以使用getActivity().onSomeEventHappened()
,不是吗?
有人可以解释我的区别吗?因为我看不出它们之间的差异。
我正在我的应用程序中实现片段。参考这个文档,我应该使用它getActivity()
来访问活动方法,而且(在下一段中)我应该在片段中声明一个接口并让活动实现它。现在,第二种方式用于事件之类的回调方法,但我也可以使用getActivity().onSomeEventHappened()
,不是吗?
有人可以解释我的区别吗?因为我看不出它们之间的差异。
如果您知道 getActivity() 将始终返回您期望的 Activity 类型,则最终结果没有区别。
但是,使用接口是一种很好的做法,因为它将您的 Fragment 与 Activity 的特定实现分离。因此,以后如果您决定将片段与不同的活动一起使用,您所要做的就是让该活动实现您的片段接口以提醒任何片段事件。
如果您想要一个易于扩展而没有副作用的应用程序,您应该始终努力使组件解耦。
你不能总是简单地调用getActivity().onSomeEventHappened()
。想象一下这种情况:您有两个片段,一个带有 ListView,另一个显示基于所选 listItem 的图像。在第二个片段中,您不能只调用getActivity().onListItemClicked()
,因为您的活动没有这样的方法,但如果活动实现接口并从第一个片段中捕获这些事件,那么您可以将有关事件的信息传递给第二个片段以及正确的图像。