Я пользуюсь Retrofit с Otto. Моя проблема заключается в том, как подписаться на несколько событий в том же фрагменте (или Activity). Согласно official doc«Метод должен принимать только один параметр, тип которого будет событием, на которое вы хотите подписаться».:Otto - подписаться на несколько мероприятий в том же фрагменте/активность
I не может сделать @Subscribe public void getAllData(Event1 event1, Event2 event2);
.
Также я не можете подписаться дважды, как: @Subscribe public void getDataOne(Event1 event1);
и @Subscribe public void getDataTwo(Event2 event2);
в классе же фрагмент (или активность).
В моем классе Fragment зарегистрироваться и разрегистрировать автобус:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
BusProvider.getInstanceBus().register(this);
}
@Override
public void onDetach() {
super.onDetach();
BusProvider.getInstanceBus().unregister(this);
}
Используя общий класс:
public class BusProvider {
private static final Bus BUS = new Bus();
public static Bus getInstanceBus(){
return BUS;
}
private BusProvider(){}
}
я отправляю мой случай из success()
метода моего запроса дооснащения:
@Override
public void success(DataResponseOne dataResponseOne, Response response) {
Log.d(GeneralConstants.LOG_TAG, " !SUCCES!");
//sent data to otto bus
BusProvider.getInstanceBus().post(dataResponseOne);
[some code for to get json in string]
Log.d(GeneralConstants.LOG_TAG + " !SUCCES!" + resultJSON);
}
и то же самое для второго события:
@Override
public void success(DataResponseTwo dataResponseTwo, Response response) {
Log.d(GeneralConstants.LOG_TAG, " !SUCCES!");
//sent data to otto bus
BusProvider.getInstanceBus().post(dataResponseTwo);
[some code for to get json in string]
Log.d(GeneralConstants.LOG_TAG + " !SUCCES!" + resultJSON);
}
Я полагаю, что есть некоторые хитрости, которые я пропускаю. Любые советы будут оценены.
thx для вашего времени, но я нашел более легкое решение – Choletski