我遇到了这个问题。我的 Activity 是 fragment 容器,因此为了在 Activity 和 fragment 之间进行通信,我使用了常见的回调方法。在这种情况下,我的 Activity 必须根据 fragment 计数实现大量回调接口(interface)。
我不喜欢硬编码和不可读的代码。就我而言,我的类声明可能需要几行来列出所有接口(interface)。
我正在努力摆脱这个。
还有另一种方法是使用 EventBus
模式。
Activity 中
EventBus.getDefault().register(this);
在 fragment 中
EventBus.getDetault().post(new MyEvent(description));
并处理activity中的几种事件类型。
也许在这里使用EventBus而不是默认的回调方法会更好?
或者也许是我的错误,我的 Activity 持有大量 Fragment(God Object),最好使用 Activity 来代替 Fragment?
请建议哪种方法更好?
最佳答案
对于简单的一个 Activity 到一个 Fragment 层次结构,回调是最简单的决定。但是想想包含一个 Fragment 的 Activity,该 Fragment 包含可滑动的 ViewPager
,并且 ViewPager 的每个选项卡都有 Fragment A、B、C。
Fragment A、B、C 将长途跋涉向母 Activity 发送事件,并且当 Activity 和子 Activity 在 crazy complex Android Activity-Fragment lifecycle dances 期间恢复时,可能会丢失 Activity 和子 Activity 之间的接口(interface)连接。 。在这种情况下,eventbus 像 otto可能是一个不错的选择。
事件总线方法的缺点是,很难维护事件的来源。因此,建议保留一些发件人。
关于android - Android 中的 Fragment 回调与 EventBus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30553942/