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

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

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

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

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

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

Handler при пересоздании активити - Программирование Android
У меня есть поток Thread, который запускается во фрагменте и получает ссылку на изображение с сервера(парсит JSON выделяет ссылку). И...

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

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

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

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

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

12
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 443
29.09.2016, 23:23 #2
redingo, Храни массив вне этой активности.
1
korshun84
28 / 83 / 19
Регистрация: 08.07.2014
Сообщений: 455
30.09.2016, 06:47 #3
Цитата Сообщение от redingo Посмотреть сообщение
Может есть какие-то методы, алгоритмы, как это реализировать?
http://startandroid.ru/ru/uroki/vse-...te-ekrana.html
1
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
30.09.2016, 07:20 #4
Можете массив сделать static.
1
vxg
Модератор
3199 / 2002 / 230
Регистрация: 13.01.2012
Сообщений: 7,751
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
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 350
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
2549 / 2031 / 633
Регистрация: 12.05.2014
Сообщений: 7,150
Завершенные тесты: 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
109 / 109 / 42
Регистрация: 24.05.2015
Сообщений: 324
30.09.2016, 15:28 #11
Цитата Сообщение от redingo Посмотреть сообщение
Если он ещё не создан, то есть дефаулт, почему NullPointerException?
Наверное потому что инициализация SharedPreferences происходит в 19 строке.
А в 6-ой вы уже пытаетесь с ними работать. Естественно будет NullPointerException.
1
Pablito
2549 / 2031 / 633
Регистрация: 12.05.2014
Сообщений: 7,150
Завершенные тесты: 1
30.09.2016, 15:38 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
не стоит наданном этапе объявлять вот так вот переменные в шапке класса
я про
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
Привет! Вот еще темы с ответами:

Как организовать сохранение данных при регистрации - Программирование Android
Здравствуйте! Делаю регистрационную форму. Регистрация состоит из нескольких частей: 1 ФИО и контакты 2 Дополнительная информация ...

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

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

Вызов новой активити не из класса активити - Программирование Android
Есть 4 класса: 1) WelcomeActivity; 2) MainActivity; 3) PopUpActivity; 4) Client. Программа работает с сервером и получает...


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

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

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