You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android独立模块中无法正常使用org.greenrobot.eventbus问题求助

问题根因

你在注册EventBus订阅者时传入了mContext(该Context本质是承载这个自定义View的MainActivity实例),但@Subscribe注解的订阅方法是定义在WeekCalender类中的,EventBus只会在你传入的注册对象所属类及其父类中查找带@Subscribe注解的公共方法,因此会抛出MainActivity不存在对应订阅方法的异常。

修复步骤
  1. 修改订阅者注册/注销逻辑,将注册对象从mContext改为当前WeekCalender实例this:
@Override
protected void onAttachedToWindow() {
    super.onAttachedToWindow();
    if (!EventBus.getDefault().isRegistered(this)) {
        EventBus.getDefault().register(this);
    }
}

@Override
protected void onDetachedFromWindow() {
    super.onDetachedFromWindow();
    if (EventBus.getDefault().isRegistered(this)) {
        EventBus.getDefault().unregister(this);
    }
}
  1. 确认订阅方法onDateClicked保持public修饰(你当前代码已满足该要求,EventBus要求订阅方法必须为公共方法)。

修改完成后模块内部的订阅逻辑即可正常运行,无需在主项目的Activity中添加订阅方法。另外你预留的setOnDateClickListener接口已经可以满足主项目获取选中日期的需求,主项目仅需调用该方法设置监听器即可拿到回调结果,无需感知模块内部的EventBus实现。

内容的提问来源于stack exchange,提问作者Sayantan Basu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:39:00