2015-11-08 75 views
2

我有这个非常简单的声明EventBus抛出的公共方法的onEvent(消息消息)当我注册

@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

请让我知道,如果我错过了什么。另外我片段延伸的抽象类

+0

实现我自己的简单EventBus'建设 - > clean'简化版,帮助吗? –

+0

nope,没有帮助。这是一个运行时错误btw – Lester

回答

0

因为它采取了这么长时间调试错误,我使用一个单独

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); 
    } 
}}