Android: SharedPreference: Defaults non stabiliti in fase di avvio
-
02-10-2019 - |
Domanda
Ho Listpreferences nella mia app. Essi non sembrano essere l'impostazione ai valori predefiniti subito dopo l'installazione - sembrano essere nullo. Sto cercando di capire perché le mie preferenze predefinite non vengono impostate subito dopo l'installazione. Nel mio codice principale ho:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
InUnits = sp.getString("List1", "defValue");
InAngs = sp.getString("List2", "defValue");
OutUnits = sp.getString("List3", "defValue");
OutAngs = sp.getString("List4", "defValue");
Subito dopo l'esecuzione della codice di cui sopra, ogni variabile contiene "defValue" invece che i valori reali che ho assegnato nella mia ListPreference di seguito.
Il mio file XML preferenza si chiama, "settings.xml". Ecco quello che uno dei ListPreferences ci assomiglia:
<ListPreference
android:key="List1"
android:title="Input: Alph"
android:summary="Choose Alph or Ralph"
android:entries="@array/inputAlph"
android:entryValues="@array/input_Alph_codes"
android:dialogTitle="Input Alph"
android:defaultValue="ININ"/>
Ecco ciò che alcuni dei miei sguardi di file strings.xml come:
<string-array name="inputUnits">
<item>Alph</item>
<item>Ralph</item>
</string-array>
<string-array name="input_Alph_codes">
<item>ININ</item>
<item>INMM</item>
</string-array>
Quando vado al menu, e le impostazioni di poi, posso vedere i miei valori di default controllati (radiobuttoned). Poi, quando torno dal menu delle impostazioni per il mio schermo principale - va tutto bene - per tutta la vita! ... allora ogni var sopra viene assegnato il valore predefinito corretto.
Questo accade solo quando ho installo la mia applicazione sul telefono. Dopo vado alle impostazioni dello schermo una volta e poi a destra fuori di esso, l'applicazione è bene e accetta qualsiasi modifica delle impostazioni.
A proposito, come si può vedere, "List1" è l'androide:. Chiave all'interno di un file chiamato settings.xml nei miei res cartella xml /
Soluzione
non sembrano essere l'impostazione di valori predefiniti subito dopo installazione - sembrano essere nullo
.
Questo è ciò che dovrebbe succedere.
Sto cercando di capire il motivo per cui il mio preferenze predefinite non vengono insieme subito dopo l'installazione.
Non dovrebbero essere. L'XML preferenza che hai elencato non viene utilizzato solo per la compilazione di un PreferenceActivity
, niente di più. Fino a quando l'utente apre il PreferenceActivity
, le preferenze saranno nulli, e le impostazioni predefinite che fornite ai getter SharedPreferences
saranno restituite.
Aggiorna
È possibile utilizzare setDefaultValues()
su PreferenceManager
per assegnare le impostazioni predefinite dal vostro preferenza XML ad un SharedPreferences
. Tuttavia, fare attenzione dei tempi -. Questo farà disco I O, e quindi ideale è eseguito / su un thread in background
Altri suggerimenti
Imposta i valori di default per SharedPreferences dalla vostra preferenza XML.
PreferenceManager.setDefaultValues(Context context, int resourceId, boolean readAgain)
È possibile specificare un valore predefinito come questo
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
pref.getString("thePrefKey", "theDefaultValue");
Il Android: defaultValue = "..." nella settings.xml "Layout" è solo un aiuto visivo per l'utente