Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Alex_Fedor
32 / 32 / 5
Регистрация: 20.01.2015
Сообщений: 230
#1

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

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

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

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

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

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

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

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

Alert Dialog закрывается при нажатии кнопки Назад - Программирование Android
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setCancelable(false); Диалог все равно закрывается,...

4
vxg
Модератор
3181 / 1984 / 226
Регистрация: 13.01.2012
Сообщений: 7,669
15.12.2016, 10:11 #2
Alex_Fedor, при нажатии назад система скорее всего убивает ваше приложение поэтому его повторное открытие приводит в onCreate с savedInstanceState == null. это может произойти и при сворачивании кнопкой домой если систему хорошенько нагрузить.
0
Alex_Fedor
32 / 32 / 5
Регистрация: 20.01.2015
Сообщений: 230
15.12.2016, 10:47  [ТС] #3
Есть еще один момент. У меня так реализовано. Есть MainActivity и несколько фрагментов Fr1 Fr2 Fr3 и тд. один из которых выводится на лайоут MainActivity. Предположим сейчас загружено Fr1. Теперь если загрузить Fr2 , а затем повернуть телефон, то onSaveInstanceState в фрагменте Fr1 не вызовется, и все что пользователь там делал теряется. Есть какой то способ сохранения данных во фрагментах поэлегантнее, а то делать через onSaveInstanceState MainActivity как представлю, аж вздрагиваю.
0
demixdn
228 / 175 / 54
Регистрация: 31.10.2016
Сообщений: 401
15.12.2016, 12:24 #4
Alex_Fedor, если глобально подходить к проблеме, то используйте MVP паттерн. Я использую реализацию Moxy, и у меня никаких проблем с восстановлением данных.
Как вариант, сделайте класс-синглетон, который хранит ваши введенные данные и при любом изменении данных во фрагменте в нем тоже обновляются данные. И когда ваш любой фрагмент оживает, он просто стучится в этот класс и забирает оттуда актуальные данные. Это не очень хороший подход, но если нужен быстрый способ, то он подойдет.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
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
Привет! Вот еще темы с ответами:

Вывод изображения после нажатия кнопки - Программирование Android
Можно ли вывести изображение на главный layout, после нажатия кнопки, которая расположена на нём? По нажатию первой кнопки должно...

Не работает приложение после нажатия кнопки home - Программирование Android
Добрый день, дорогие форумчане.:) Волнует такой вопрос - написала приложение под android(intelij idea), запускаю на девайсе. Всё...

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

Вызов метода при каждом открытии приложения - Программирование Android
Мне нужно, что бы при открытии приложения вызывался определенный метод. Если ставлю в onCreate, то вызов его происходит только если все...


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

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

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