IllegalArgumentException в OTTO при отмене регистрации фрагмента

Я использую автобус Отто, чтобы передать события от активности до фрагментов. Проблема в том, что фрагменты управляются ViewPager и фрагмент может быть воссоздан без выполнения его onPause() и / или onResume(), Неприятный побочный эффект в том, что когда bus.unregister(fragment) называется в onPause() вызов периодически терпит неудачу с IllegalArgumentException. Я также подозреваю, что звонки на мой @Subscribe аннотированный метод может быть пропущен, так как bus.register() звонок в onResume() метод, который также не может быть вызван. И, к сожалению, нет bus.isRegistered(fragment) способ сделать безопасную проверку.

Есть ли лучший способ для регистрации / отмены регистрации управляемого фрагмента ViewPager?

Мне известно об этом посте, в котором обсуждаются похожие настройки, но он не включает фрагменты, запущенные во ViewPager.

1 ответ

Решение

Если вы пришли сюда, потому что у вас есть похожая проблема - оказывается (спасибо Ник Кэмпион за указание на это), в этом нет ничего плохого onPause\onResume в моем фрагменте. У меня просто было register/untegister вызывается дважды: один раз в родительском абстрактном классе, а другой - в дочернем. Как в class MyFragment extends AbsFragment, Так что, возможно, посмотрите на ваш код

Другие вопросы по тегам