Я использую шину Отто для передачи событий от активности к фрагментам. Проблема в том, что фрагменты управляются ViewPager
, и фрагмент может быть воссоздан без выполнения его onPause()
и/или onResume()
. Неприятным побочным эффектом этого является то, что когда bus.unregister(fragment)
вызывается в onPause()
, вызов периодически завершается с ошибкой IllegalArgumentException. Я также подозреваю, что вызовы моего аннотированного метода @Subscribe
могут быть пропущены, поскольку вызов bus.register()
находится в методе onResume()
, который также можно не вызывать. И, к сожалению, нет bus.isRegistered(fragment)
метода безопасной проверки.
Есть ли лучший способ зарегистрировать/отменить регистрацию управляемого фрагмента ViewPager?
Мне известно об этом сообщении, в котором обсуждается аналогичная установка. но он не включает фрагменты, запущенные в ViewPager
FragmentPagerAdapter.destroyItem()
, есть вызовFragmentTransaction.detach
, который заставит фрагмент пройти свой жизненный цикл. Я предполагаю, что вы регистрируете onPause on Resume с распечаткойthis
, чтобы вы могли видеть идентификатор объекта фрагментов, выполняющих вызовы? - person Nick Campion   schedule 07.02.2013