У меня возникли проблемы с хранением List
в классе Application
.Совместное использование ArrayList между активностями
В моем экране Splash я загружаю данные в базу данных List
из базы данных MySQL
.
List
находится в классе Rateit
, который extends Application
. Я делаю это в нем в качестве переменной класса:
public static List<String> masterCats;
В Splash Screen активность/класса, я делаю это:
в onCreate
:
Rateit.masterCats = new ArrayList<String>();
Внутри моей петли AsyncTask где загрузка данных Я делаю это:
Rateit.masterCats.add(cat);
cat
является элемент списка тха t поступает из базы данных. У меня есть Log.d
данные (cat
), а также ListPosition, чтобы проверить, добавляется ли он в List
, и это так.
Однако мне нужно получить эту же информацию в следующем Activity
и положить ее в adapter
. Он возвращается с длиной 0.
Я просто сделать это: adapter = new MasterCatAdapter(getActivity(), Rateit.masterCats, tf);
Каким образом список не сохранять данные по activies? Это потому, что его static
? что-то другое?
(Примечание: я буду добавлять методы получения и установки здесь в ближайшее время!)
Не связывайтесь с статические переменные. Оставайтесь с постоянным хранилищем. Даже прохождение через намерения будет работать, если ваш ArrayList невелик. –
Надеюсь, вы не имеете в виду SQLite? Или SharedPreferences лучший вариант? – KickingLettuce
Согласно этому документу, Android ведет себя корректно, когда используются статические переменные: http: //developer.android.com/guide/faq/framework.html Может быть, что-то еще очищает вашу статическую переменную в какой-то момент? –