Массив Android пуст при запуске - PullRequest
0 голосов
/ 05 марта 2011

в моем приложении пользователь может создать массив элементов. Например, он может назначить имя Array1 для Array2.Моя проблема в том, что каждый раз, когда я запускаю приложение, Array2 Arraylist пуст.Я определяю массив следующим образом:

ArrayList<String> Array2 = new ArrayList<String>();

и вот так я заполняю массив:

Array2.add(strBuf.toString()); //strBuf is StringBuffer created from two strings

Я что-то пропустил или мне следует сохранить в массив в файл или в sg else?

Обновление:

У меня есть два счетчика и кнопка ОК в диалоговом окне.Когда пользователь выбирает элементы из счетчиков и нажимает кнопку ОК, элемент добавляет массив.Это делается путем объединения двух строк, одна для 1-го счетчика, другая для второй (linkname1 и linkname2).Сначала, когда массив пуст, элемент добавляется.Если в массиве есть хотя бы один элемент, выполняется проверка, есть ли этот элемент в списке.Если это так, он перезаписывается, если нет, то он добавляется.

Button okbtn = (Button) dialog.findViewById(R.id.ButtonOK);
                okbtn.setOnClickListener(new View.OnClickListener() 
                {
                    public void onClick(View v) 
                    {
                        if ((linkname1!="") && (linkname2!=""))
                        {
                            strBuf = new StringBuffer();
                            strBuf.append(linkname2); 
                            strBuf.append(" ");
                            strBuf.append(linkname1); 


                            if (Array2.size() < 1)
                            {
                                Array2.add(strBuf.toString()); 
                            }
                            else if (Array2.size() > 0)
                            {
                              for (int i=0; i<Array2.size(); i++)
                              {
                                spaceIndex4 =  Array2.get(i).indexOf(' ');
                                if (spaceIndex4 > 0)
                                {
                                    if (linkname1.equals(Array2.get(i).substring(spaceIndex4+1, Array2.get(i).length()))==true)
                                    {
                                        van=1;
                                        Array2.remove(i);
                                        Array2.add(strBuf.toString());
                                    }
                                    else
                                    {
                                        van=2;
                                    }
                                }
                              }
                            }

                            }

                        dialog.dismiss();
                        if (van == 2)
                        {
                            Array2.add(strBuf.toString());
                        }
                    }
                });     

Я использую элементы в Arraylist позже (когда пользователь нажимает на определенные элементы ListView, элементы этого ArrayList должны появляться),Когда я закрываю приложение как в Eclipse, так и на моем телефоне, а затем снова открываю его, массив списков пуст (поэтому элементы больше не отображаются, когда пользователь нажимает на элемент ListView).В коде нет Array2.clear () или чего-либо подобного.

1 Ответ

0 голосов
/ 06 марта 2011

Ваш ArrayList - это просто переменная.Переменные умирают после закрытия программы в любой среде программирования.Вы должны сохранить свои предметы где-нибудь на постоянной основе.Запишите его в файл или, в зависимости от того, сколько вам нужно сохранить, вы можете использовать SharedPreferences.Затем просто прочитайте его обратно и снова заполните ArrayList в onCreate ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...