Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
1

Как восстановить значения при открытии приложения после нажатия кнопки назад

14.12.2016, 22:37. Просмотров 607. Ответов 4
Метки нет (Все метки)

Как гарантированно вызвать onSaveInstanceState. Столкнулся с такой ситуацией. Сохраняю значения для перезагрузки приложения. Если телефон вертится в эмуляторе, то все нормально. onSaveInstanceState вызывается, Bundle загружается, выгружается. Однако если свернуть приложение кнопкой назад. Потом его восстановить, то onSaveInstanceState не вызывается, соответственно с Bundle ничего не происходит. Но onCreate вызывается, и все переменные инициализируются заново. Соответственно все слетает.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2016, 22:37
Ответы с готовыми решениями:

Выполнение серверного кода после нажатия кнопки «Назад» в браузере
Добрый день. Проблема в целом далеко не новая, но элегантного решения для своего случая пока не...

Автоматическое нажатие кнопки при открытии приложения
Здравствуйте. Подскажите пожалуйста, как реализовать, что бы при открытии .exe автоматически...

Сворачивание приложения при нажатии кнопки "Назад"
Как сделать, чтобы при нажатии кнопки "назад" приложение не закрывалось, а сворачивалось?

В созданном браузере при нажатии кнопки "Назад" выходит из приложения
Всем привет! Недавно начал изучать как разрабатывать приложения под Android. Хочу написать...

4
vxg
Модератор
3306 / 2098 / 332
Регистрация: 13.01.2012
Сообщений: 8,152
15.12.2016, 10:11 2
Alex_Fedor, при нажатии назад система скорее всего убивает ваше приложение поэтому его повторное открытие приводит в onCreate с savedInstanceState == null. это может произойти и при сворачивании кнопкой домой если систему хорошенько нагрузить.
0
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
15.12.2016, 10:47  [ТС] 3
Есть еще один момент. У меня так реализовано. Есть MainActivity и несколько фрагментов Fr1 Fr2 Fr3 и тд. один из которых выводится на лайоут MainActivity. Предположим сейчас загружено Fr1. Теперь если загрузить Fr2 , а затем повернуть телефон, то onSaveInstanceState в фрагменте Fr1 не вызовется, и все что пользователь там делал теряется. Есть какой то способ сохранения данных во фрагментах поэлегантнее, а то делать через onSaveInstanceState MainActivity как представлю, аж вздрагиваю.
0
demixdn
312 / 256 / 80
Регистрация: 31.10.2016
Сообщений: 619
15.12.2016, 12:24 4
Alex_Fedor, если глобально подходить к проблеме, то используйте MVP паттерн. Я использую реализацию Moxy, и у меня никаких проблем с восстановлением данных.
Как вариант, сделайте класс-синглетон, который хранит ваши введенные данные и при любом изменении данных во фрагменте в нем тоже обновляются данные. И когда ваш любой фрагмент оживает, он просто стучится в этот класс и забирает оттуда актуальные данные. Это не очень хороший подход, но если нужен быстрый способ, то он подойдет.
0
CoolMind
424 / 405 / 67
Регистрация: 06.10.2012
Сообщений: 1,747
18.12.2016, 18:12 5
demixdn, каким образом паттерн может решать проблему событий? Что можно сделать в MVP, можно сделать и в MVC, насколько я понимаю.
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
повернуть телефон, то onSaveInstanceState в фрагменте Fr1 не вызовется
На самом деле? http://stackoverflow.com/questions/9...e-being-called

Добавлено через 2 минуты
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
Однако если свернуть приложение кнопкой назад. Потом его восстановить, то onSaveInstanceState не вызывается
Логично. Поэтому надо сохранять данные, например, в SharedPreferences (кроме тех, которые нельзя в целях безопасности), а затем восстанавливать.
0
18.12.2016, 18:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2016, 18:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Полное завершение работы приложения при нажатии навигационной кнопки "Назад"
Здравствуйте. Имеется приложение. При нажатии кнопки "Домой" приложение выходит на главный экран и...

Возврат значения кнопки при нажатия (массив кнопок)
Подскажите, пожалуйста, если это возможно : Есть массив кнопок, есть 1 обработчик события на 10...

Ошибка при вызове readln после нажатия кнопки
Работаю с PascalABC.NET, и после компиляции, при нажатии на кнопку выскакивает ошибка. Как решить...

Почему Windows 7 загружается только после нажатия кнопки F1 при загрузки?
При этом при загрузки системы выводиться сообщения о неисправности жесткого диска, но никаких сбоев...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.