2013-03-26 16 views
15

Ho preference.xml come questoCome impostare più valori predefiniti in un MultiSelectListPreference?

<MultiSelectListPreference 
     android:key="store_select" 
     android:title="@string/setting_store_title" 
     android:summary="@string/setting_store_summary" 
     android:dialogTitle="@string/setting_store_dialog_title" 
     android:entries="@array/store_names" 
     android:entryValues="@array/stores" 
     android:defaultValue="@array/stores" 
     /> 

con i miei due matrici:

<string-array name="stores"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
    <item>5</item> 
</string-array> 

<string-array name="store_names"> 
    <item>foodbasics</item> 
    <item>nofrills</item> 
    <item>metro</item> 
    <item>loblaws</item> 
    <item>sobeys</item> 
</string-array> 

Voglio che il comportamento di default di essere tutte le opzioni selezionate, ma al momento nulla è selezionata per impostazione predefinita. Sto facendo qualcosa di sbagliato?

risposta

5

Penso che hai dimenticato di chiamare PreferenceManager.setDefaultValues(this, R.xml.preference, false); nel metodo onCreate() del tuo mainActivity.

Questo metodo legge il file preference.xml e imposta i valori predefiniti definiti lì. L'impostazione dell'argomento readAgain su false significa che verranno impostati solo i valori predefiniti se questo metodo non è mai stato chiamato in passato, quindi non dovrai preoccuparti di ignorare le impostazioni dell'utente ogni volta che viene creata l'attività.

2

So che sono in ritardo, ma può essere la mia risposta aiuta a qualcun altro in futuro ...

set

android:defaultValue="@array/empty_array" 

dove empty_array è un array vuoto.

13

Per rendere tutti gli elementi MultiSelectListPreference selezionati (on) per impostazione predefinita, quindi includere l'attributo defaultsValue per la preferenza, ad es.

android:defaultValue="@array/stores" 

Se non funziona, quindi assicurarsi che si clear i dati applicativi come questo avranno effetto solo la prima volta che si esegue l'applicazione.

+0

Questo ha funzionato per me. – X09