Мое приложение для Android управляет несколькими фрагментами. Однако я вижу большое количество сбоев в поле, содержащих эту строку журнала:
java.lang.IllegalStateException: состояние сохранения отказа: активный XxxFragment {81e598 id = 0x7f0b0069 tag_yyy} очистил индекс: -1
Поиски ответов в Qaru были бесплодны; Кажется, у меня много компаний, которые задаются вопросом, что именно это означает. Копаясь в трассировке исключений и в источниках Android, я вижу, что исключение происходит с того момента, когда моя основная активность сохраняет свое состояние (FragmentActivity.onSaveInstanceState), а отдельные фрагменты записываются в Parcelable. Каждый фрагмент имеет индекс (называемый mIndex), который должен быть неотрицательным, но это не совсем понятно из кода, почему это должно быть так, поскольку mIndex больше никогда не используется в этой функции.
У меня нет хорошей идеи, как Фрагмент попадает в это состояние или что я могу с этим поделать. Я не смог воспроизвести ошибку в своей тестовой среде. Может ли кто-нибудь пролить свет на то, как избежать и/или справиться с этим исключением?
Связанные вопросы SO:
java.lang.IllegalStateException: Сбой сохранения состояния: активный сбросил индекс в фрагменте
Что делает активный фрагмент, очищенный индекс: -1 и как его исправить?