Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 29
#1

Сохранение данных при пересоздании активити - Android

29.09.2016, 22:42. Просмотров 231. Ответов 12
Метки нет (Все метки)

Добрый день, может кто-то сталкивался: имеются данные, которые я хочу добавить как ArrayList, но столкнулся с проблемой - если менять что-то в этом массиве, то после пересоздания активити(ArrayList в OnCreate создаю), подгрузиться старый массив, а изменения не сохраняться.
Может есть какие-то методы, алгоритмы, как это реализировать?
Сильно не ругайтесь, только втягиваюсь в джавку)
Заранее спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 433
29.09.2016, 23:23     Сохранение данных при пересоздании активити #2
redingo, Храни массив вне этой активности.
korshun84
13 / 68 / 14
Регистрация: 08.07.2014
Сообщений: 359
30.09.2016, 06:47     Сохранение данных при пересоздании активити #3
Цитата Сообщение от redingo Посмотреть сообщение
Может есть какие-то методы, алгоритмы, как это реализировать?
http://startandroid.ru/ru/uroki/vse-...te-ekrana.html
Bend3r
148 / 135 / 18
Регистрация: 29.07.2012
Сообщений: 709
30.09.2016, 07:20     Сохранение данных при пересоздании активити #4
Можете массив сделать static.
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,925
30.09.2016, 08:26     Сохранение данных при пересоздании активити #5
Но только static в Application
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 29
30.09.2016, 09:03  [ТС]     Сохранение данных при пересоздании активити #6
Просто дело в том, что есть массив.
Java
1
2
People student1= new People("Dima",1);
Persons.add(student1);
Это всё в OnCreate.
Если поменять второй параметр и закрыть app.
То будут добавляться со старыми параметрами.
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
30.09.2016, 10:33     Сохранение данных при пересоздании активити #7
Как вариант используйте локальную БД
Или сохраняйте в префах, вот например как тут.

Не по теме:

что-то проблема со вставлением ссылки, поищите поиском: сохранение массива в SharedPreferences



Конечно, если массив очень большой, то лучше БД.

Да и при Create вы просто сами перезаписываете сохраненное значение. Проверяйте при Create менялся ли массив и если менялся, то не пересоздавайте его вновь.
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 29
30.09.2016, 11:51  [ТС]     Сохранение данных при пересоздании активити #8
Как тогда создать переменную, которая не обнулиться при пересоздании или полном закрытии активити?
Паблито
2017 / 1759 / 548
Регистрация: 12.05.2014
Сообщений: 6,240
Завершенные тесты: 1
30.09.2016, 11:59     Сохранение данных при пересоздании активити #9
тебе уже ответили
- сохранять переменную в классе Application
- сохранять в SharedPreferences
- в базе
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 29
30.09.2016, 13:32  [ТС]     Сохранение данных при пересоздании активити #10
Чёт день сегодня точно тяжёлый
Эрор java.lang.NullPointerException на строке с присвоением.
Если он ещё не создан, то есть дефаулт, почему NullPointerException?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    SharedPreferences settings;
    SharedPreferences.Editor editor;
    boolean ifWasSet;
    public void makeList() {
 
        ifWasSet = settings.getBoolean("comp",false);
 
 
        if(ifWasSet == true){
            System.out.println("Ne dobavlyaem");
        }else{
 
 
        persons.add(student1);
        persons.add(student2);
        persons.add(student3);
        persons.add(student4);
 
        settings = getApplicationContext().getSharedPreferences(STORAGE_NAME, Context.MODE_PRIVATE);
        editor = settings.edit();
        editor.putBoolean("comp", true);
        editor.commit();
        }
    }
fraley
94 / 94 / 34
Регистрация: 24.05.2015
Сообщений: 284
30.09.2016, 15:28     Сохранение данных при пересоздании активити #11
Цитата Сообщение от redingo Посмотреть сообщение
Если он ещё не создан, то есть дефаулт, почему NullPointerException?
Наверное потому что инициализация SharedPreferences происходит в 19 строке.
А в 6-ой вы уже пытаетесь с ними работать. Естественно будет NullPointerException.
Паблито
2017 / 1759 / 548
Регистрация: 12.05.2014
Сообщений: 6,240
Завершенные тесты: 1
30.09.2016, 15:38     Сохранение данных при пересоздании активити #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
не стоит наданном этапе объявлять вот так вот переменные в шапке класса
я про
SharedPreferences settings;
SharedPreferences.Editor editor;

там где необходимо взять ссылку на SharedPreferences и надо писать
JSON
1
SharedPreferences sp = getSharedPreferences(name, mode)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2016, 17:28     Сохранение данных при пересоздании активити
Еще ссылки по теме:

Сохранение данные при переходе на другой активити Android
Android Handler при пересоздании активити
Как организовать сохранение данных при регистрации Android
Android Отправка данных из dialogfragment в активити в котором был создан диалог
Android Сохранение набранного в EditText текста при смене активити

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

Или воспользуйтесь поиском по форуму:
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 29
30.09.2016, 17:28  [ТС]     Сохранение данных при пересоздании активити #13
Всем спасибо
Yandex
Объявления
30.09.2016, 17:28     Сохранение данных при пересоздании активити
Ответ Создать тему
Опции темы

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