当用户从Activity
Fragments
中选择fragments
时,我有item
显示不同的spinner
并且这些ActionBar
已更改},我在button
上刷新ActionBar
。如果我想告诉当前显示的片段使用ActionBar上的刷新菜单按钮刷新内容。我应该实现一个与Fragments通信的Listener吗?或者我应该使用BroadCastReciever
通知片段刷新。哪个更好 ??我没有实施任何这些。
答案 0 :(得分:1)
如果您需要"谈话"您应该只使用广播。更广泛的受众。在你的情况下你想要一个片段和一个按钮,我建议实现听众。它可以是活动侦听操作栏按钮操作,然后告诉片段刷新,或直接绑定这两个
答案 1 :(得分:1)
这真是不容易的问题。 从一方面来看,广播对于这么简单的任务可能会有点过分,所以我建议使用听众。但..
但是,请确保您了解Fragments的工作原理。如果您打算从代码创建它们并立即设置监听器 - 这可以第一次工作。但是,当系统重新实例化片段时,您可能会遇到活动重新创建的麻烦。在这种情况下,它只能使用Fragment的公共空构造函数,并且您的代码可能会出现未设置的侦听器。
所以我认为好主意是从Fragment本身设置监听器,例如在onAttach()
或onStart
。在那里,您可以使用getActivity()
进行保持活动并设置侦听器。这种方法的缺点是你必须将Activity转换为特定的类来访问监听器方法,这限制了其他活动中的片段重用,所以要注意这一事实。
希望有所帮助