2013-03-25 8 views
8

Ho una preferenza interruttore e vogliamo che sia inadempiente "ON" ... nel xml,Switchpreference Android come posso impostare il valore predefinito della preferenza di commutazione?

<SwitchPreference 
     android:defaultValue="true" 
     android:key="PromoNotificationOnOff" 
     android:title="@string/Snotification_enable" /> 

e in classe,

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Load the preferences from an XML resource 
    addPreferencesFromResource(R.xml.settings); 


} 

perché non sta funzionando? Che cosa manca? Grazie!!

risposta

9

nel metodo MainActivity onCreate aggiungere questa riga

PreferenceManager.setDefaultValues(this, R.xml.settings, false); 

Si può leggere su di esso in http://developer.android.com/reference/android/preference/PreferenceManager.html#setDefaultValues(android.content.Context, int, boolean)

+3

L'XML "android: defaultValue" tag è assolutamente corretto. Aggiornare il valore (sovrascrivendolo) nel codice è ridondante e potrebbe causare confusione in seguito se entrambi vengono lasciati sul posto. Tuttavia, durante il debug di questo codice, i "valori predefiniti" per gli elementi preferenza spesso non vengono eseguiti fino a quando i Dati applicazione non vengono cancellati nelle Impostazioni Android. – gtcompscientist

+0

@gtcompscientist prima di commentare e giù voto dovresti leggere il link di riferimento. Se questo è troppo disturbo, dovresti almeno leggere il documento su setDefaultValues ​​() per sapere cosa rappresentano i parametri. Dove nella soluzione ho fornito che aggiorni il valore impostato nel xml? La soluzione che ho fornito è assolutamente corretta e chiara se si sa quale sia il metodo setDefaultValues ​​(). –

Problemi correlati