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