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
, Так что, возможно, посмотрите на ваш код