EventBusException: Subscriber class *** and its super classes have no public methods with the @Subsc

来源:互联网 发布:vr全景拼接软件 编辑:程序博客网 时间:2024/05/21 09:47

简述:

    去年的时候使用过一次EventBus,今天又遇到使用EventBus的项目,由于时隔一年多了所以写了一个Demo,但不行的是按照往常的用法却报出了这个异常:

EventBusException: Subscriber class *** and its super classes have no public methods with the @Subscribe annotation。说明一下,我用的是3.0.0版本的EventBus。

异常日志:

ava.lang.RuntimeException: Unable to start activity ComponentInfo{com.lizhenya.eventbusdemo/com.lizhenya.eventbusdemo.MainActivity}: org.greenrobot.eventbus.EventBusException: Subscriber class com.lizhenya.eventbusdemo.MainActivity and its super classes have no public methods with the @Subscribe annotationat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)at android.app.ActivityThread.-wrap11(ActivityThread.java)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:148)at android.app.ActivityThread.main(ActivityThread.java:5417)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.lizhenya.eventbusdemo.MainActivity and its super classes have no public methods with the @Subscribe annotationat org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:67)at org.greenrobot.eventbus.EventBus.register(EventBus.java:136)at com.lizhenya.eventbusdemo.MainActivity.onCreate(MainActivity.java:24)at android.app.Activity.performCreate(Activity.java:6237)at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

分析:

  在使用EventBus中在消息接收的页面需要使用下面的代码来注册:

EventBus.getDefault().register(this)
    onCreate时,EventBus扫描当前类,将onEventMainThread()等以onEvent开头的几个方法存储起来。OK,那么既然可以扫描出来为什么还会报出这样的异常错误,这个问题还得看源码。

解决方案:

    在onEventMainThread()方法上加注解“@Subscribe”;

0 0