Восстановить данные в FragmentActivity после нажатия кнопки «Назад»

Я много читал о восстановлении данных в FragmentActivity, но в моем случае ничего не работает. Я пробовал много методов, чтобы сделать это, но это никогда не работало.

У меня есть FragmentActivity, содержащий ViewPager с 6 или 7 фрагментами. Каждый из этих фрагментов содержит ListView. Данные в этом ListView были получены из Интернета.

Я могу выбрать элемент ListView во фрагменте, чтобы открыть новое действие, показывающее детали выбранного элемента.

Когда я возвращаюсь к своей FragmentActivity, я не хочу получать новые данные о времени из Интернета, но получаю их из пакета или чего-то еще, что позволяет мне мгновенно отображать данные.

Я попробовал getLast(Custom)NonconfigurationInstance(), но он вызывается только тогда, когда реальная конфигурация была изменена (например, ориентация экрана). Я также пробовал onSavedInstanceState в FragmentActivity, во Fragment, с вызовом суперметода и без него... Я всегда получаю нулевой пакет saveInstanceState в моем onCreate/onCreateView.

У меня нет кода для вас, потому что я возвращаюсь к нулю.

Любые идеи, пожалуйста?


person QLag    schedule 19.04.2013    source источник
comment
Сохраняйте данные постоянным способом (настройки, файл, база данных) при первом их получении.   -  person user    schedule 20.04.2013
comment
Я думал об этом, но считаю, что это плохая практика: настройки следует использовать для сохранения постоянных данных; даже когда приложение закрыто, данные сохраняются. но у меня нет другого способа сделать это сейчас, поэтому я попробую это.   -  person QLag    schedule 20.04.2013
comment
Или вы можете сохранить его на уровне приложения и хранить в памяти, пока приложение существует. Когда вы вернетесь к этому Activity, посмотрите, доступны ли вам данные (возможно, с отметкой времени, чтобы увидеть, не следует ли обновлять их, даже если они существуют), и если они недоступны, извлеките их.   -  person user    schedule 20.04.2013


Ответы (1)


Хорошо, я нашел решение, но я ненавижу его! в любом случае...

Когда я выбираю элемент в списке своего фрагмента, я помещаю данные, которые хочу восстановить, в ActivityA с помощью специального класса, который реализует Serializable, и закрываю ActivityA. ActivityB запускается. когда я закрываю ActivityB, я помещаю данные, которые хочу восстановить, в ActivityA. Я проверяю, не являются ли мои данные нулевыми (они могут быть нулевыми, если я не прихожу из ActivityB), и если это не так, я могу заполнить свои фрагменты и свои списки без подключения к сети.

Это очень плохой способ решить мою проблему, но я действительно понятия не имею, почему методы "savedInstanceState" не работают в этом случае.

person QLag    schedule 20.04.2013