我想在我的項目中使用EventBus,並且遇到問題。 我有一個與一般事件參數片段超類:GreenRobot EventBus收到錯誤事件
public abstract class BaseNetworkFragment<EVENT extends BaseEvent> extends Fragment {
//some code
@Override
public void onResume() {
super.onResume();
EventBus.getDefault().register(this);
}
@Override
public void onPause() {
super.onPause();
EventBus.getDefault().unregister(this);
}
@Subscribe
public void onApiResponse(EVENT event) {
//some action
}
}
我有一個超類BaseEvent。 和2事件類:
public class EventOne extends BaseEvent{
}
public class EventTwo extends BaseEvent{
}
創建片段與通用參數EventOne並呼籲API:
public class MyFragment extends BaseNetworkFragment<EventOne> {
//some code
//make request for Api, when ServiceHelper has results it posts EventOne
ServiceHelper.getInstance().getSomeData();
}
現在我不使用EventTwo和一切工作正常。
但是,如果我添加IM MyFragment代碼:
@Subscribe
public void onEventTwo(EventTwo event) {
//some action
}
,要求把API服務,哪些職位EventTwo結果,我曾經犯過的錯誤。 我的方法onEventTwo();
正常工作,但超類的方法onApiResponse();
也收到EventTwo,但它只能接收EventOne!所以我有ClassCastException
我也注意到,如果我從超類中刪除方法onApiResponse()
,並將其寫入MyFragment中,一切都會好的,但我需要在超類中使用此方法。
我認爲這個問題是泛型參數,但我無法修復它。 另外我使用改進的異步請求。 請幫我)