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

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

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

Добрый день, может кто-то сталкивался: имеются данные, которые я хочу добавить как ArrayList, но столкнулся с проблемой - если менять что-то в этом массиве, то после пересоздания активити(ArrayList в OnCreate создаю), подгрузиться старый массив, а изменения не сохраняться.
Может есть какие-то методы, алгоритмы, как это реализировать?
Сильно не ругайтесь, только втягиваюсь в джавку)
Заранее спасибо.
http://www.cyberforum.ru/android-dev/thread1777302.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2016, 22:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сохранение данных при пересоздании активити (Программирование Android):

Сохранить состояние презентера при пересоздании (повороте) активити
Вот у презентера можно реализовать метод onDetach() в котором он обнуляет...

Сохранение данные при переходе на другой активити
Доброго времени суток, уважаемые! Вопрос заезжан и много инфы в инете, но...

Сохранение набранного в EditText текста при смене активити
Добрый день, подскажите как сделать чтобы при смене активити текст в EditText...

На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити
Сделал меню в виде ListView. При клике на меню запускаются активити. На...

Как вызвать метод в активити классе из обычного не активити класса?
Есть активити в котором вводятся логин и пароль. При нажатии кнопки "войти" в...

12
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 443
29.09.2016, 23:23 #2
redingo, Храни массив вне этой активности.
1
korshun84
86 / 86 / 22
Регистрация: 08.07.2014
Сообщений: 502
30.09.2016, 06:47 #3
Цитата Сообщение от redingo Посмотреть сообщение
Может есть какие-то методы, алгоритмы, как это реализировать?
http://startandroid.ru/ru/uroki/vse-...te-ekrana.html
1
Bend3r
149 / 136 / 35
Регистрация: 29.07.2012
Сообщений: 709
30.09.2016, 07:20 #4
Можете массив сделать static.
1
vxg
Модератор
3230 / 2033 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
30.09.2016, 08:26 #5
Но только static в Application
1
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 30
30.09.2016, 09:03  [ТС] #6
Просто дело в том, что есть массив.
Java
1
2
People student1= new People("Dima",1);
Persons.add(student1);
Это всё в OnCreate.
Если поменять второй параметр и закрыть app.
То будут добавляться со старыми параметрами.
0
Alexvp
111 / 75 / 8
Регистрация: 03.08.2014
Сообщений: 380
30.09.2016, 10:33 #7
Как вариант используйте локальную БД
Или сохраняйте в префах, вот например как тут.

Не по теме:

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



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

Да и при Create вы просто сами перезаписываете сохраненное значение. Проверяйте при Create менялся ли массив и если менялся, то не пересоздавайте его вновь.
1
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 30
30.09.2016, 11:51  [ТС] #8
Как тогда создать переменную, которая не обнулиться при пересоздании или полном закрытии активити?
0
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
30.09.2016, 11:59 #9
тебе уже ответили
- сохранять переменную в классе Application
- сохранять в SharedPreferences
- в базе
1
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 30
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();
        }
    }
0
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
30.09.2016, 15:28 #11
Цитата Сообщение от redingo Посмотреть сообщение
Если он ещё не создан, то есть дефаулт, почему NullPointerException?
Наверное потому что инициализация SharedPreferences происходит в 19 строке.
А в 6-ой вы уже пытаетесь с ними работать. Естественно будет NullPointerException.
1
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
30.09.2016, 15:38 #12
Лучший ответ Сообщение было отмечено redingo как решение

Решение

не стоит наданном этапе объявлять вот так вот переменные в шапке класса
я про
SharedPreferences settings;
SharedPreferences.Editor editor;

там где необходимо взять ссылку на SharedPreferences и надо писать
JSON
1
SharedPreferences sp = getSharedPreferences(name, mode)
1
redingo
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 30
30.09.2016, 17:28  [ТС] #13
Всем спасибо
0
30.09.2016, 17:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2016, 17:28
Привет! Вот еще темы с решениями:

Как организовать сохранение данных при регистрации
Здравствуйте! Делаю регистрационную форму. Регистрация состоит из нескольких...

Сохранение введенных данных при переходе на другой activity
Здравствуйте, такая ситуация, есть два активити, 1-Форма добавления клиента в...

Отображение активити поверх другого активити
Ребят подскажите пожалуйста как такое сделать. Есть активити с картой, по...

Вызов новой активити не из класса активити
Есть 4 класса: 1) WelcomeActivity; 2) MainActivity; 3) PopUpActivity; 4)...


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

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

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