Я пытаюсь сохранить подкласс ListFragment в изменении ориентации, поэтому я добавил setRetainInstance (true) в конец моей функции onCreate. Я добавил метод onSaveInstanceState, чтобы добавить все его данные в пакет, а затем добавить код в onActivityCreated, чтобы загрузить эти данные. К сожалению, это не сработает.setRetainInstance не работает для ListFragment при использовании библиотеки compatibiltiy
Когда я добавил некоторые отладочные сообщения с помощью Log.d, я обнаружил, что не только не был вызван onSaveInstanceState, но onCreate (что, по-видимому, говорит, что документация не должна произойти, когда preserveInstance истинно). Ни onCreate, ни onActivityCreated не имеют пакетов с моими данными (неудивительно).
Я предполагаю, что это может быть проблемой с библиотекой совместимости, хотя у меня нет устройства Android Android 3.0, чтобы проверить это.
Любая помощь приветствуется, и я могу при необходимости опубликовать некоторые фрагменты кода, хотя я не делаю ничего сложного.
Update: OnDestroy не вызывается при изменении ориентации (что, как это должно быть), так что кажется, что некоторые из setRetainInstance работает
Я бы предложил отладку сборника lib, чтобы узнать, что происходит. Какую версию совместимой библиотеки вы используете? Я использую r1 и избегаю r2, потому что есть хотя бы одна ошибка регрессии, при которой onDestroy не вызывается при замене фрагмента. – PJL
Я использую r3, я буду искать более старую версию, чтобы узнать, помогает ли это. Любые предложения о том, как отлаживать совместимость lib? Я очень новичок в отладке Java. – rofer
Просто попробуйте войти в один из методов совместимости lib, и вам будет предложено указать местоположение источников. – PJL