Как сохранить String[] в настройках

Возможный дубликат:
массив строк в SharedPreferences

Я новичок в Android и хотел бы изучить, как сохранять и извлекать String[] из настроек. На данный момент у меня есть два образца кода. Этот для экономии

    void saveText() {
    sPref = getSharedPreferences("MyPref", MODE_PRIVATE);
    Editor ed = sPref.edit();
    ed.putString(SAVED_TEXT, position_name);
    ed.commit();
}

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

    void loadText() {
    sPref = getSharedPreferences("MyPref", MODE_PRIVATE);
    String position_name = sPref.getString(SAVED_TEXT, "");
    bazar.add(new Bazar(position_name, R.drawable.unread));
}

оба метода являются статическими, но я хочу, чтобы они работали с данными динамического типа String. Короче говоря, я набираю некоторые данные, которые должны храниться в массиве строк, а затем в массиве строк, хранящемся в настройках, и когда я загружаю свою активность, я хочу, чтобы эти сохраненные данные были извлечены. Пробовал разные подходы - результата нет. Можете ли вы помочь мне в этом?


person user1706819    schedule 11.10.2012    source источник
comment
Я видел это, мне нужен какой-то образец. У вас есть ссылки, где я могу найти его.   -  person user1706819    schedule 11.10.2012
comment
вы не можете хранить массив по предпочтениям. Вы можете хранить только примитивные типы данных, если я прав.   -  person Andro Selva    schedule 11.10.2012
comment
Должен ли я использовать тогда SQLite? Как я уже сказал, я новичок, и я хотел бы начать свое путешествие на Android с простых вещей.   -  person user1706819    schedule 11.10.2012
comment
Да, вы можете использовать sqlite. Это должно сработать.   -  person Andro Selva    schedule 11.10.2012
comment
Есть другие решения или советы?   -  person user1706819    schedule 11.10.2012


Ответы (3)


Вы можете хранить набор строк, используя SharedPreferences в API уровня 11 и выше. См. getStringSet() и putStringSet()

На уровне API до 11 вы можете использовать какой-то хак. Например, если вам нужно сохранить массив строк под ключом "stringArray", вы можете сохранить каждую строку из массива, используя putString и ключи "stringArray.1", "stringArray.2" и т.д.

person G M Ramesh    schedule 11.10.2012

сохраните его как строку с помощью разделителя (запятая), а при извлечении просто используйте split()

string str="";
str += "item1,";
.
.

установите String str в свой SharePreference и commit() Чтобы получить то же самое в массиве: получите prefStr из SharePreference

String[] Array= prefStr.split(",");

Надеюсь, это поможет вам.

person Rushabh Patel    schedule 11.10.2012

Вы не можете, поскольку общие префы поддерживают только примитивные переменные, по крайней мере, не можете ни для чего в API 11. Для того, что ниже, вы можете сделать, это пошагово пройти через массив и поместить его индивидуально, как здесь http://www.sherif.mobi/2012/05/string-arrays-and-object-arrays-in.html?m=1

Что я лично делаю, так это сериализую объект, который, я думаю, приводит его к 0 и 1. Затем вы положили это туда. Вам нужно получить класс сериализации или создать его самостоятельно Сохранить ArrayList в SharedPreferences

стыдно однако. Простой поиск дал бы вам эти результаты

person mango    schedule 11.10.2012