У меня проблема с EventBus
от Greenrobot.
Я пытался опубликовать событие из фоновой службы из моего адаптера синхронизации и поймать его во фрагменте, чтобы обновить пользовательский интерфейс.
Проблема в том, что когда я пытаюсь опубликовать событие из адаптера синхронизации, я получаю следующее в журнале отладки:
No subscribers registered for event class olexiimuraviov.ua.simplerssreader.event.UpdateUIEvent No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
Я регистрирую фрагмент в onResume
и отменяю регистрацию в onPause
@Override
public void onResume() {
super.onResume();
EventBus.getDefault().register(this);
if (mDebug) Log.d(LOG_TAG, EventBus.getDefault().isRegistered(this) + "");
}
@Override
public void onPause() {
super.onPause();
EventBus.getDefault().unregister(this);
}
Оператор журнала в onResume показывает, что фрагмент успешно зарегистрирован.
Вот метод onEvent:
@Subscribe
public void onEvent(UpdateUIEvent event) {
if (mSwipeRefreshLayout.isRefreshing())
mSwipeRefreshLayout.setRefreshing(false);
}
Я пытался вызвать метод onEvent с фоновым режимом потока, но это не помогло.
После этого я пытался использовать обработчик для публикации события, но eventbus по-прежнему не может найти зарегистрированных подписчиков для события.
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
EventBus.getDefault().post(new UpdateUIEvent());
}
});
Вот мой метод onPerform адаптера синхронизации:
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {
// Fetch data from server
} finally {
// close everything
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Log.d(LOG_TAG, "Update event");
EventBus.getDefault().post(new UpdateUIEvent());
}
});
}
}
Как я могу отправить событие из адаптера синхронизации во фрагмент, используя EventBus
Greenrobot?