Поместить и получить массив String из общих настроек
Мне нужно сохранить на общих настройках некоторый массив строк и после этого получить их. Я попробовал это:
prefsEditor.putString(PLAYLISTS, playlists.toString());
где плейлисты – это String[]
и получить:
- Как разобрать этот вложенный массив JSON в android
- Как инициализировать 3D-массив в C ++
- JavaScript: разница между .forEach () и .map ()
- Разделить строку на массив в Bash
- Функция сортировки массива VBA?
playlist= myPrefs.getString(PLAYLISTS, "playlists");
где плейлист – это String
но он не работает.
Как я могу это сделать ? Может кто-нибудь мне помочь?
Заранее спасибо.
- Отправить массив с HTTP Get
- Java: multidimensional array против одномерного
- Как поместить вход сканера в массив ... например, пару цифр
- Почему `Array (0,1,2) == Array (0,1,2)` не возвращает ожидаемый результат?
- [Обозначение массива L - откуда оно взялось?
- JSON Array итерация в Android / Java
- Хранение идентификаторов R.drawable в массиве XML
- Разница между System.Array.CopyTo () и System.Array.Clone ()
Вы можете создать собственное строковое представление массива следующим образом:
StringBuilder sb = new StringBuilder(); for (int i = 0; i < playlists.length; i++) { sb.append(playlists[i]).append(","); } prefsEditor.putString(PLAYLISTS, sb.toString());
Затем, когда вы получаете String из SharedPreferences, просто проанализируйте его следующим образом:
String[] playlists = playlist.split(",");
Это должно выполнить эту работу.
С уровня API 11 вы можете использовать putStringSet и getStringSet для хранения / извлечения наборов строк:
SharedPreferences pref = context.getSharedPreferences(TAG, Context.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putStringSet(SOME_KEY, someStringSet); editor.commit(); SharedPreferences pref = context.getSharedPreferences(TAG, Context.MODE_PRIVATE); Set someStringSet = pref.getStringSet(SOME_KEY);
Вы можете использовать JSON для сериализации массива в виде строки и сохранения его в настройках. См. Мой ответ и пример кода для аналогичного вопроса здесь:
Как написать код для создания sharedpreferences для массива в android?
HashSet mSet = new HashSet<>(); mSet.add("data1"); mSet.add("data2"); saveStringSet(context, mSet);
где
public static void saveStringSet(Context context, HashSet mSet) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = sp.edit(); editor.putStringSet(PREF_STRING_SET_KEY, mSet); editor.apply(); }
а также
public static Set getSavedStringSets(Context context) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); return sp.getStringSet(PREF_STRING_SET_KEY, null); } private static final String PREF_STRING_SET_KEY = "string_set_key";