Нам нужно получить пользовательские объекты во многих местах, которые содержат много полей. После входа в систему я хочу сохранить / сохранить эти пользовательские объекты. Как мы можем реализовать такой сценарий?
Я не могу хранить это так:
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("BusinessUnit", strBusinessUnit);
android
sharedpreferences
Piraba
источник
источник
Ответы:
Вы можете использовать gson.jar для хранения объектов класса в SharedPreferences . Вы можете скачать эту банку с Google-GSON
Или добавьте зависимость GSON в ваш файл Gradle:
Создание общего предпочтения:
Сохранить:
Чтобы получить:
источник
Чтобы добавить ответ @ MuhammadAamirALi, вы можете использовать Gson для сохранения и получения списка объектов.
Сохранить список пользовательских объектов в SharedPreferences
Получить список пользовательских объектов из SharedPreferences
источник
Я знаю, что эта тема немного старая. Но я все равно опубликую это, надеясь, что это может кому-то помочь. Мы можем сохранить поля любого объекта с общими предпочтениями , сериализовав объект в строку. Здесь я использовал
GSON
для хранения любого объекта с общими предпочтениями.Сохранить объект в настройках:
Получить объект из предпочтения:
Примечание :
Не забудьте добавить
compile 'com.google.code.gson:gson:2.6.2'
кdependencies
вашему Gradle.Пример :
Обновить:
Как отметил @Sharp_Edge в комментариях, вышеуказанное решение не работает с
List
.Небольшая модификация подписи
getSavedObjectFromPreference()
- отClass<GenericClass> classType
доType classType
сделает это решение обобщенным. Модифицированная функция подписи,Для вызова,
Удачного кодирования!
источник
commit
вместоapply
. Это может помочь вам.List<CustomClass>
как мне это сделать?getSavedObjectFromPreference(context, "mPreference", "mObjectKey", SampleClass.class)
не принимаетList<CustomClass>.class
:(Лучше создать глобальный
Constants
класс для сохранения ключа или переменных для извлечения или сохранения данных.Для сохранения данных вызовите этот метод, чтобы сохранить данные отовсюду.
Используйте это, чтобы получить данные.
и метод что-то вроде этого сделает свое дело
источник
Попробуйте этот лучший способ:
PreferenceConnector.java
Напишите значение:
И получить значение, используя:
источник
return PreferenceManager.getDefaultSharedPreferences(context);
вместоreturn context.getSharedPreferences(PREF_NAME, MODE);
prefsEditor
После этого вы не указали, что вы делаете с объектом, но чтобы сохранить данные о предпочтениях, вам также необходимо использовать:источник
Смотрите здесь, это может помочь вам:
https://github.com/AltasT/PreferenceVObjectFile/blob/master/PreferenceVObjectFile/src/com/altas/lib/PreferenceUtils.java
источник
Другой способ сохранить и восстановить объект из общих настроек Android без использования формата Json
источник
Вы можете сохранить объект в настройках без использования какой-либо библиотеки, в первую очередь ваш класс объекта должен реализовать Serializable:
}
Затем вы можете легко использовать эти два метода для преобразования объекта в строку и строки в объект:
Сохранить:
Читать
источник
Шаг 1: Скопируйте и вставьте эти две функции в ваш файл Java.
Шаг 2: сохранить использование:
извлечь использование:
Вы можете установить разные общие настройки, используя разные имена ключей, такие как:
источник
Если вы хотите сохранить весь объект, который вы получите в ответ, он может достичь чего-то вроде:
Сначала создайте метод, который преобразует ваш JSON в строку в вашем классе утилит, как показано ниже.
Затем в классе общих настроек.
а затем создать метод для getPreferences
Затем просто вызовите метод First, когда вы получите ответ, и второй, когда вам нужно получить данные из общих настроек, например
вот и все.
Надеюсь, это поможет вам.
Happy Coding();
источник
У меня возникли проблемы с использованием принятого ответа для доступа к данным общих предпочтений во всех действиях. На этих шагах вы даете getSharedPreferences имя для доступа к нему.
Добавьте следующую зависимость в файл build.gradel (Module: app) под Gradle Scripts:
Сохранить:
Получить в другой деятельности:
источник
надеюсь, это поможет вам :)
источник
Вот пример использования делегированных свойств Kotlin, который я взял отсюда , но расширил его и предоставляет простой механизм получения / установки свойств SharedPreference.
Для
String
,Int
,Long
,Float
илиBoolean
, он использует стандартный SharePreference геттер (ы) и сеттер (ы). Однако для всех других классов данных он использует GSON для сериализации в aString
для установщика. Затем десериализуется в объект данных для получения.Как и в других решениях, для этого требуется добавить GSON в качестве зависимости в ваш файл Gradle:
Вот пример простого класса данных, который мы хотели бы сохранить и сохранить в SharedPreferences:
Вот один класс, который реализует делегаты свойства:
Примечание: вам не нужно ничего обновлять в
sealed class
. Делегированные свойства объекта / СинглтоныUserPreferenceProperty
,NullableUserPreferenceProperty
иFirstTimeUser
.Чтобы настроить новый объект данных для сохранения / получения из SharedPreferences, теперь просто добавить четыре строки:
Наконец, вы можете читать / записывать значения в SharedPreferences, просто используя
by
ключевое слово:источник
Если ваш объект сложный, я бы предложил сериализовать / XML / JSON и сохранить это содержимое на SD-карту. Вы можете найти дополнительную информацию о том, как сохранить во внешнем хранилище здесь: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
источник
Есть два файла, которые решают все ваши проблемы с разделяемыми настройками
1) AppPersistence.java
2) AppPreference.java
теперь вы можете сохранить, удалить или получить как,
-спасти
-удалять
-получить
источник
Хранить данные в SharedPreference
источник
Мой класс утилит для сохранения списка в
SharedPreferences
С помощью
,
Полный код моих утилит // проверьте, используя пример в коде активности
источник
Добавлена библиотека Джексона в Gradle:
Мой тестовый класс:
Объект Java в JSON:
Сохраните его в общих настройках:
Восстановите его из общих настроек:
источник