使用BroadCast Receiver Vs Listener与当前显示的片段进行通信

时间:2012-09-02 09:45:30

标签: android android-fragments android-actionbar

当用户从Activity Fragments中选择fragments时,我有item显示不同的spinner并且这些ActionBar已更改},我在button上刷新ActionBar。如果我想告诉当前显示的片段使用ActionBar上的刷新菜单按钮刷新内容。我应该实现一个与Fragments通信的Listener吗?或者我应该使用BroadCastReciever通知片段刷新。哪个更好 ??我没有实施任何这些。

2 个答案:

答案 0 :(得分:1)

如果您需要"谈话"您应该只使用广播。更广泛的受众。在你的情况下你想要一个片段和一个按钮,我建议实现听众。它可以是活动侦听操作栏按钮操作,然后告诉片段刷新,或直接绑定这两个

答案 1 :(得分:1)

这真是不容易的问题。 从一方面来看,广播对于这么简单的任务可能会有点过分,所以我建议使用听众。但..

但是,请确保您了解Fragments的工作原理。如果您打算从代码创建它们并立即设置监听器 - 这可以第一次工作。但是,当系统重新实例化片段时,您可能会遇到活动重新创建的麻烦。在这种情况下,它只能使用Fragment的公共空构造函数,并且您的代码可能会出现未设置的侦听器。

所以我认为好主意是从Fragment本身设置监听器,例如在onAttach()onStart。在那里,您可以使用getActivity()进行保持活动并设置侦听器。这种方法的缺点是你必须将Activity转换为特定的类来访问监听器方法,这限制了其他活动中的片段重用,所以要注意这一事实。

希望有所帮助