Android 片段与活动之间的通信

Android 片段与活动之间的通信,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,我正在我的应用程序中实现片段。对此,, 我应该使用getActivity()访问活动方法,但是(在下一段中)我应该在片段中声明一个接口,并让活动实现它。 现在,第二种方法用于事件等回调方法,但我也可以使用getActivity()。onSomeEventOccessed(),不是吗 有人能给我解释一下区别吗?因为我看不出它们之间的区别。您不能总是简单地调用getActivity().onSomeEventOccessed()。想象一下这种情况:您有两个片段,一个带有ListView,另一个显示基

我正在我的应用程序中实现片段。对此,, 我应该使用
getActivity()
访问活动方法,但是(在下一段中)我应该在片段中声明一个接口,并让活动实现它。 现在,第二种方法用于事件等回调方法,但我也可以使用
getActivity()。onSomeEventOccessed()
,不是吗


有人能给我解释一下区别吗?因为我看不出它们之间的区别。

您不能总是简单地调用
getActivity().onSomeEventOccessed()
。想象一下这种情况:您有两个片段,一个带有ListView,另一个显示基于所选listItem的图像。在第二个片段中,您不能只调用
getActivity().onListItemClicked()
,因为您的活动没有这样的方法,但如果活动实现接口并从第一个片段捕获这些事件,然后,您可以将有关事件的信息传递给第二个片段,以及如何创建正确的图像。

如果您知道getActivity()将始终返回您期望的活动类型,则最终结果没有区别

然而,使用接口是一种很好的实践,因为它将您的片段与活动的特定实现分离。因此,以后如果您决定将片段与其他活动一起使用,您所要做的就是让该活动实现您的片段接口,以便对任何片段事件发出警报


如果您想要一个易于扩展且没有副作用的应用程序,那么您应该始终努力使用解耦的组件

好的,但是如果我知道
getActivity()
返回的活动是我声明的活动,我可以强制转换返回的引用并使用我的活动的方法,对吗?这样,界面就没用了,不是吗?