Android - Como faço para definir uma preferência no Código
-
23-08-2019 - |
Pergunta
Eu tenho um aplicativo Android em que tenho minhas preferências em um arquivo XML, que funciona bem. Agora eu quero definir uma das preferências usando o código em vez de exibir a tela de preferência inteiro, como eu iria fazer isso?
Solução
Eu assumo por preferências que você está se referindo as preferências do seu aplicativo e não configurações do telefone Android.
Para armazenar as preferências entre as execuções de sua aplicação que você precisa fazer o seguinte
-
Crie um objeto SharedPreferences
SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
Cordas n identifica suas preferências e o segundo argumento é o modo que vai ser acessada
-
instanciar um Editor de objeto
SharedPreferences.Editor editor = settings.edit();
Nota: não tente settings.editor.edit (), isso não vai fazer um objeto persistente e o código abaixo não funcionará
-
Escreva suas preferências para o buffer
editor.put...(String, value)
Existem inúmeros função put, putString, putBoolean, etc. The String é a chave ( "versão", "boa run") eo valor é o valor ( "1.5.2", true)
-
Lavar o tampão
editor.commit();
Este realmente escreve você colocar com as preferências. Se seu aplicativo trava antes desta linha, em seguida, as preferências não serão gravados. Há também um bug documentado: Commit () deve retornar um booleano indicando sucesso ou fracasso. Última vez que verifiquei que sempre voltava falsa.
Essas preferências serão por guardados no telefone e só será acessível a sua aplicação.
Mais documentação está href="http://developer.android.com/guide/topics/data/data-storage.html" aqui
Outras dicas
Eu tentei isso, mas não funcionou:
SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
Tente isto em vez disso:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Você pode salvar alguma coisa nos SharedPreferences usando o código abaixo
public static void save(String valueKey, String value) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
SharedPreferences.Editor edit = prefs.edit();
edit.putString(valueKey, value);
edit.commit();
}
Para ler preferências:
public static String read(String valueKey, String valueDefault) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
return prefs.getString(valueKey, valueDefault);
}