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 /

È stato utile?

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)

PreferenceManager.setDefaultValues ??

È 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top