Я пытаюсь использовать EventBus в своем проекте, и у меня есть проблема. У меня есть супер-класс для фрагментов с родовым параметром EVENT: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 и требуют Апи:
public class MyFragment extends BaseNetworkFragment<EventOne> {
//some code
//make request for Api, when ServiceHelper has results it posts EventOne
ServiceHelper.getInstance().getSomeData();
}
Теперь я не использую EventTwo и все работает правильно.
Но если добавить им-код MyFragment:
@Subscribe
public void onEventTwo(EventTwo event) {
//some action
}
И призывают Api услуги, которые сообщений EventTwo в результате, у меня есть ошибки. Мой метод onEventTwo();
работает правильно, но метод onApiResponse();
от суперкласса также получает EventTwo, но он может получать только EventOne! Поэтому у меня есть ClassCastException
Я также заметил, что если я удалю метод onApiResponse()
из суперкласса и напишу его в MyFragment, все будет в порядке, но мне нужен этот метод в суперклассе.
Я думаю, что проблема в общем параметре, но я не могу это исправить. Также я использую модификацию для асинхронных запросов. Пожалуйста, помогите мне)