我遇到了这个问题。我的Activity
是片段容器,所以为了在活动和片段之间进行通信,我使用了常见的Callback
方法。在这种情况下,我的活动必须根据片段数量实现大量的回调接口
我不喜欢硬编码和不可读的代码。在我的情况下,我的类声明可以用几行来列出所有接口
我试图摆脱这个。
另一种方法是使用EventBus
模式
在活动中
EventBus.getDefault().register(this);
片段
EventBus.getDetault().post(new MyEvent(description));
并在活动中处理多种事件类型。
也许最好在这里使用EventBus而不是默认的Callback方法??
或者也许我的错是我的活动中存有大量碎片(God Object),最好使用活动而不是Fragment?
请建议哪种方法更好?
答案 0 :(得分:4)
对于简单的一个Activity到一个Fragment层次结构,回调是最简单的决定。但想想包含Fragment的Activity,Fragment包含可滑动的ViewPager
,ViewPager的每个标签都有片段A,B,C。
片段A,B,C将长途旅行将事件发送给母亲活动,并且在crazy complex Android Activity-Fragment lifecycle dances期间恢复活动与儿童之间的界面连接可能会丢失。在这种情况下,像otto这样的事件总线可能是一个不错的选择。
事件总线方法的缺点是,很难维护事件的来源。因此,建议保留一些发件人。
答案 1 :(得分:1)
您的interface
方法非常棒,只需跟上它们,然后尝试切片/制作interface
静态内容并添加所有小void
和{{1}转到该接口,这样你就可以实现一个并调用这些函数。
return method
? EventBus
怎么样?它是一个偏好的问题,你觉得哪个更适合你,毕竟如果你处理10,000个请求并且讨厌100 LocalBroadcastReceiver
s,你最终会使用1并嵌套99。
&安培;只是忘记了,最好保留很多interface
而不是Fragment
,因为在一天结束时Activity
生命周期很难维持,其次是你无法真正控制Activity
生命周期与Activity
和Fragment
相比,所有人都是好奴隶,为你提供更好的服务