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

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

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

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

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

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

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

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

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

4
vxg
Модератор
3292 / 2086 / 330
Регистрация: 13.01.2012
Сообщений: 8,118
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
310 / 255 / 79
Регистрация: 31.10.2016
Сообщений: 619
15.12.2016, 12:24 4
Alex_Fedor, если глобально подходить к проблеме, то используйте MVP паттерн. Я использую реализацию Moxy, и у меня никаких проблем с восстановлением данных.
Как вариант, сделайте класс-синглетон, который хранит ваши введенные данные и при любом изменении данных во фрагменте в нем тоже обновляются данные. И когда ваш любой фрагмент оживает, он просто стучится в этот класс и забирает оттуда актуальные данные. Это не очень хороший подход, но если нужен быстрый способ, то он подойдет.
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
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
MoreAnswers
Эксперт
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 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru