android - Android 中的 Fragment 回调与 EventBus

标签 android android-fragments android-activity callback event-bus

我遇到了这个问题。我的 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/

相关文章:

android - 滑动布局中的按钮 SetOnClickListener NullPointerException

java - Fragment 返回导航退出到主屏幕 - Android

android - android中的圆形布局

android - 在共享首选项中选择、裁剪和保存 uri 图像

android - 无法通过低功耗蓝牙发现服务和特征 - BLE

java - addView() fragment 中的框架布局

android - Fragments如何影响Activity "single, focused thing that the user can do"原理?

android - 如何获得家居壁纸偏移量?

android - Fragment 中的 ViewPager 在返回时丢失内容

android - 从 Activity 访问 Fragment 的 View