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?

Foi útil?

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

  1. 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

  2. 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á

  3. 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)

  4. 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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top