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

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

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

Как гарантированно вызвать onSaveInstanceState. Столкнулся с такой ситуацией. Сохраняю значения для перезагрузки приложения. Если телефон вертится в эмуляторе, то все нормально. onSaveInstanceState вызывается, Bundle загружается, выгружается. Однако если свернуть приложение кнопкой назад. Потом его восстановить, то onSaveInstanceState не вызывается, соответственно с Bundle ничего не происходит. Но onCreate вызывается, и все переменные инициализируются заново. Соответственно все слетает.
http://www.cyberforum.ru/android-dev/thread1553621.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2016, 22:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как восстановить значения при открытии приложения после нажатия кнопки назад (Программирование Android):

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

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

GridView после нажатия назад возвращается на первую ячейку
Всем привет В приложении использован GridView Имеются 58 категорий, всё...

Как программно убрать клавиатуру после нажатия кнопки "Далее"?
Здравствуйте, уважаемые форумчане. Я недавно начал изучать android и столкнулся...

Alert Dialog закрывается при нажатии кнопки Назад
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());...

4
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
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
284 / 231 / 68
Регистрация: 31.10.2016
Сообщений: 553
15.12.2016, 12:24 #4
Alex_Fedor, если глобально подходить к проблеме, то используйте MVP паттерн. Я использую реализацию Moxy, и у меня никаких проблем с восстановлением данных.
Как вариант, сделайте класс-синглетон, который хранит ваши введенные данные и при любом изменении данных во фрагменте в нем тоже обновляются данные. И когда ваш любой фрагмент оживает, он просто стучится в этот класс и забирает оттуда актуальные данные. Это не очень хороший подход, но если нужен быстрый способ, то он подойдет.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
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
Привет! Вот еще темы с решениями:

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

Вывод изображения после нажатия кнопки
Можно ли вывести изображение на главный layout, после нажатия кнопки, которая...

Не работает приложение после нажатия кнопки home
Добрый день, дорогие форумчане.:) Волнует такой вопрос - написала приложение...

Переход на фрагмент при открытии приложения
Доброго времени суток! Недавно начал заниматься разработкой Android приложения,...


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

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

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