Я столкнулся с очень неожиданной (и невероятно расстраивающей) функциональностью, пытаясь восстановить состояние списка CheckBox после поворота экрана. Я решил, что сначала попытаюсь дать текстовое объяснение без кода, если кто-то сможет определить решение без всех подробностей. Если кому-то нужно больше деталей, я могу опубликовать код.
У меня есть прокручиваемый список сложных представлений, содержащих CheckBoxes. Я не смог восстановить состояние этих флажков после поворота экрана. Я реализовал onSaveInstanceState и успешно передал список выбранных флажков методу onCreate. Это обрабатывается путем передачи длинного [] идентификаторов базы данных в Bundle.
В onCreate() я проверяю Bundle для массива идентификаторов. Если массив существует, я использую его, чтобы определить, какие флажки проверяются при построении списка. Я создал несколько методов тестирования и подтвердил правильность установки флажков на основе массива id. В качестве последней проверки я проверяю состояния всех флажков в самом конце onCreate(). Все выглядит хорошо... если я не поворачиваю экран.
Когда я поворачиваю экран, происходит одна из двух вещей: 1) Если выбрано любое количество флажков, кроме последнего, все флажки отключены после поворота. 2) Если последний флажок установлен перед вращением, все флажки проверяются после поворота.
Как я уже сказал, я проверяю состояние ящиков в самом конце моего onCreate(). Дело в том, что состояние ящиков в конце onCreate правильное на основе того, что я выбрал до поворота. Однако состояние ящиков на экране не отражает этого.
Кроме того, я выполнил каждый флажок setOnCheckChangedListener(), и я подтвердил, что состояние моих флажков изменяется после возврата метода onCreate.
У кого-нибудь есть идея, что происходит? Почему состояние моих флажков изменяется после возврата метода onCreate?
Заранее благодарим за помощь. Я пытаюсь разложить это на пару дней. После того, как я обнаружил, что мои флажки, очевидно, меняются где-то за пределами моего собственного кода, я решил, что пришло время спросить.