2

我有这个非常直接的声明

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}

@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}

public void onEventMainThread(RefreshMessage message){
    ToastUtils.showLongToast(getActivity(), message.getRefresh() ? "ok":"false");
}

我不知道为什么它仍然抛出

没有称为 onEvent 的公共方法

如果我错过了什么,请告诉我。我的片段也扩展了一个 AbstractClass

4

1 回答 1

0

因为调试错误需要很长时间,所以我使用单例实现了自己的简单 EventBus

public class EventBusMainThread {
private static EventBusMainThread selfInstance;

private List<EventBusSubscriber> subscribers;

public EventBusMainThread() {
    this.subscribers = new CopyOnWriteArrayList<>();
}

public static EventBusMainThread getInstance(){
    if(selfInstance == null)
        selfInstance = new EventBusMainThread();
    return selfInstance;
}

public synchronized void register(EventBusSubscriber subscriber){
    subscribers.add(subscriber);
}

public synchronized void unregister(EventBusSubscriber subscriber){
    subscribers.remove(subscriber);
}

public void post(Object message){
    for(EventBusSubscriber subscriber : subscribers){
        subscriber.onEvent(message);
    }
}}
于 2015-11-08T11:40:32.783 回答