1

我有一个Activity显示不同的内容,当用户从中选择一个时Fragments,这些发生了变化,我在. 如果我想告诉当前显示的片段使用 ActionBar 上的刷新菜单按钮刷新它的内容。我应该实现一个与片段通信的侦听器吗?或者我应该使用 a来通知 Fragment 刷新。哪个更好 ??我没有实施任何这些。 fragmentsitemspinnerActionBarbuttonActionBarBroadCastReciever

4

2 回答 2

1

如果您需要与更广泛的受众“交谈”,您应该只使用广播。在您的情况下,您需要一个片段和一个按钮,我建议实现侦听器。可以是activity监听action bar按钮动作然后告诉fragment刷新,也可以直接绑定这两者

于 2012-09-02T09:49:45.377 回答
1

这真的不是一个简单的问题。从一方面来看,对于这样一个简单的任务,广播可能会是一种过度杀伤,所以我建议使用监听器。但..

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

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

希望能帮助到你

于 2012-09-02T10:53:02.297 回答