file di preferenza non sono storead nel progetto /res/xml/defaults.xml
che vengono memorizzati sul dispositivo nella cartella dell'applicazione qualcosa come
/data/data/com.your.pkg/default.prefs
Prova non specificare il nome del file, come avrete un po ' problemi con i file delle preferenze, come questo OP aveva in questa domanda: How do I get preferences to work in Android?
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(context);
Poi probabilmente si dovrà interrogare
preferences.getString('weightPref', null);
Molte applicazioni possono fornire un modo per catturare le preferenze degli utenti delle impostazioni di una specifica applicazione o un'attività. Per supportare questo, Android fornisce un semplice set di API.
Le preferenze sono in genere coppie di valori nominali. Possono essere memorizzati come "Preferenze condivise" attraverso varie attività in un'applicazione (nota che al momento non può essere condivisa tra i processi). Oppure può essere qualcosa che deve essere memorizzato specifico per un'attività.
Preferenze condivise: le preferenze condivise possono essere utilizzate da tutti i componenti (attività, servizi, ecc.) Dalle applicazioni.
Preferenze di gestione attività: queste preferenze possono essere utilizzate solo con l'attività e non possono essere utilizzate da altri componenti dell'applicazione.
Preferenze condivise:
Le preferenze condivise sono gestite con l'aiuto di getSharedPreferences
metodo della classe Context
. Le preferenze sono memorizzate in un file predefinito (1) oppure è possibile specificare un nome file (2) da utilizzare per fare riferimento alle preferenze.
(1) Ecco come si ottiene l'istanza quando si specifica il nome del file
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
è la modalità operativa per le preferenze. È la modalità predefinita e significa che il file creato sarà accessibile solo dall'applicazione chiamante. Altre due modalità supportate sono MODE_WORLD_READABLE
e MODE_WORLD_WRITEABLE
.Nell'applicazione MODE_WORLD_READABLE
un'altra applicazione può leggere il file creato ma non può modificarlo. Nel caso di MODE_WORLD_WRITEABLE
, anche altre applicazioni dispongono di autorizzazioni di scrittura per il file creato.
(2) Il metodo consigliato è quello di utilizzare la modalità di default, senza specificare il nome del file
SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);
Infine, una volta che hai l'istanza preferenze, ecco come si può recuperare la stored valori dalle preferenze:
int storedPreference = preferences.getInt("storedInt", 0);
Per memorizzare i valori nel file delle preferenzeL'oggettodeve essere usato. Editor
è l'interfaccia nidificata della classe SharedPreference
.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Editor sostenere anche metodi come remove()
e clear()
per cancellare il valore di preferenza dal file.
Preferenze
attività:
Le preferenze condivise possono essere utilizzati da altri componenti dell'applicazione. Ma se non hai bisogno di condividere le preferenze con altri componenti e vuoi avere le attività preferenze private. Puoi farlo con l'aiuto del metodo getPreferences()
dell'attività. Il metodo getPreference
utilizza il metodo getSharedPreferences()
con il nome della classe di attività per il nome file di preferenza.
seguito è il codice per ottenere preferenze
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Il codice per memorizzare valori è anche lo stesso come nel caso delle preferenze condivise.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
È inoltre possibile utilizzare altri metodi come la memorizzazione dello stato di attività nel database. Nota Android contiene anche un pacchetto chiamato android.preference
. Il pacchetto definisce le classi per implementare l'interfaccia utente delle preferenze dell'applicazione.
Per vedere altri esempi, controllare il post di Android Data Storage sul sito degli sviluppatori.
Si prega di [non utilizzare "qui" o "clicca qui" come testo del link] (http://www.w3.org/QA/Tips/noClickHere.html). Grazie! –
Quello che voglio fare è definire un file xml di preferenze utente con valori predefiniti in res/xml/preferences.xml, come hai detto posso ottenere queste preferenze con: PreferenceManager.getDefaultSharedPreferences (context); Dall'altro lato voglio definire in un altro file un altro tipo di preferenze per la configurazione della mia app (gli utenti non possono gestire queste preferenze di configurazione, solo il codice della mia app sarà in grado di leggerle). La mia domanda è dove posso specificare i valori predefiniti per queste preferenze di configurazione, se ho già un file per le preferenze dell'utente (res/xml/preferences.xml). – whynot
Joachim è un buon punto. Fisso. – MatrixFrog