Precisamos obter objetos de usuário em muitos lugares, que contêm muitos campos. Após o login, desejo salvar / armazenar esses objetos de usuário. Como podemos implementar esse tipo de cenário?
Não posso armazená-lo assim:
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("BusinessUnit", strBusinessUnit);
android
sharedpreferences
Piraba
fonte
fonte
Respostas:
Você pode usar o gson.jar para armazenar objetos de classe em SharedPreferences . Você pode baixar este jar no google-gson
Ou adicione a dependência do GSON no seu arquivo Gradle:
Criando uma preferência compartilhada:
Salvar:
Para recuperar:
fonte
Para adicionar à resposta de @ MuhammadAamirALi, você pode usar o Gson para salvar e recuperar uma lista de objetos
Salvar lista de objetos definidos pelo usuário em SharedPreferences
Obter Lista de objetos definidos pelo usuário em SharedPreferences
fonte
Eu sei que esta discussão é um pouco antiga. Mas vou postar isso de qualquer maneira, esperando que ajude alguém. Podemos armazenar campos de qualquer objeto com preferência compartilhada serializando o objeto para String. Aqui eu usei
GSON
para armazenar qualquer objeto de preferência compartilhada.Salvar objeto como preferência:
Recuperar objeto de preferência:
Nota :
Lembre-se de adicionar
compile 'com.google.code.gson:gson:2.6.2'
aodependencies
seu gradle.Exemplo :
Atualizar:
Como o @Sharp_Edge apontou nos comentários, a solução acima não funciona
List
.Uma pequena modificação na assinatura de
getSavedObjectFromPreference()
- fromClass<GenericClass> classType
paraType classType
fará com que essa solução seja generalizada. Assinatura de função modificada,Para invocar,
Feliz codificação!
fonte
commit
vez deapply
. Isso pode ajudá-lo.List<CustomClass>
como devo fazer isso?getSavedObjectFromPreference(context, "mPreference", "mObjectKey", SampleClass.class)
não está aceitandoList<CustomClass>.class
:(Melhor é criar uma
Constants
classe global para salvar chaves ou variáveis para buscar ou salvar dados.Para salvar dados, chame esse método para salvar dados de todos os lugares.
Use-o para obter dados.
e um método parecido com isto fará o truque
fonte
Tente da melhor maneira:
PreferenceConnector.java
Escreva o valor:
E obtenha valor usando:
fonte
return PreferenceManager.getDefaultSharedPreferences(context);
vez dereturn context.getSharedPreferences(PREF_NAME, MODE);
Você não declarou o que faz com o
prefsEditor
objeto depois disso, mas para manter os dados de preferência, você também precisa usar:fonte
Veja aqui, isso pode ajudá-lo:
https://github.com/AltasT/PreferenceVObjectFile/blob/master/PreferenceVObjectFile/src/com/altas/lib/PreferenceUtils.java
fonte
Outra maneira de salvar e restaurar um objeto das preferências compartilhadas do Android sem usar o formato Json
fonte
Você pode salvar o objeto nas preferências sem usar nenhuma biblioteca. Primeiro, sua classe de objeto deve implementar Serializable:
}
Em seguida, você pode facilmente usar esses dois métodos para converter objeto em string e string em objeto:
Salvar:
Ler
fonte
Etapa 1: Copie e cole essas duas funções no seu arquivo java.
Etapa 2: para salvar o uso:
para recuperar o uso:
Você pode definir diferentes preferências compartilhadas usando diferentes nomes de chave, como:
fonte
Se você deseja armazenar todo o Objeto que obtém em resposta, ele pode ser alcançado fazendo algo como,
Primeiro, crie um método que converta seu JSON em uma string na sua classe util, como abaixo.
Em Classe Preferências Compartilhadas, faça algo como:
e crie um método para getPreferences
Em seguida, basta chamar o método First quando receber resposta e o segundo quando precisar obter dados de preferências de compartilhamento, como
Isso é tudo.
Espero que ajude você.
Happy Coding();
fonte
Ocorreu um problema ao usar a resposta aceita para acessar os dados de Preferências compartilhadas entre as atividades. Nessas etapas, você fornece um nome para o getSharedPreferences para acessá-lo.
Adicione a seguinte dependência no arquivo build.gradel (Module: app) em Scripts Gradle:
Salvar:
Para recuperar em uma atividade diferente:
fonte
Espero que isso ajude você :)
fonte
Aqui está uma visão geral sobre o uso de propriedades delegadas do Kotlin que eu peguei aqui , mas que foi expandido e permite um mecanismo simples para obter / configurar as propriedades SharedPreference.
Para
String
,Int
,Long
,Float
ouBoolean
, ele usa o getter padrão SharePreference (s) e Setter (s). No entanto, para todas as outras classes de dados, ele usa o GSON para serializar para aString
, para o configurador. Em seguida, desserializa para o objeto de dados, para o getter.Semelhante a outras soluções, isso requer a adição do GSON como uma dependência no seu arquivo gradle:
Aqui está um exemplo de uma classe de dados simples que queremos salvar e armazenar em SharedPreferences:
Aqui está a classe que implementa os delegados de propriedade:
Nota: você não precisa atualizar nada no
sealed class
. As propriedades são delegadas objeto / SingletonUserPreferenceProperty
,NullableUserPreferenceProperty
eFirstTimeUser
.Para configurar um novo objeto de dados para salvar / obter de SharedPreferences, agora é tão fácil quanto adicionar quatro linhas:
Por fim, você pode ler / gravar valores em SharedPreferences usando a
by
palavra-chave:fonte
Se o seu objeto for complexo, sugiro serializá-lo / XML / JSON e salvá-lo no cartão SD. Você pode encontrar informações adicionais sobre como salvar em armazenamento externo aqui: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
fonte
existem dois arquivos resolvidos todo o seu problema sobre preferências compartilhadas
1) AppPersistence.java
2) AppPreference.java
agora você pode salvar, remover ou curtir,
-Salve
-remover
-obter
fonte
Armazenar dados no SharedPreference
fonte
Minha classe utils para salvar a lista em
SharedPreferences
Usando
.
Código completo dos meus utilitários // verifique usando o exemplo no código de atividade
fonte
Adicionado a biblioteca jackson para classificar:
Minha classe de teste:
Objeto Java para JSON:
Armazene-o em preferências compartilhadas:
Restaure-o a partir de preferências compartilhadas:
fonte