2012-12-07 25 views
7

Sto utilizzando CheckBoxPreference per la schermata delle impostazioni. L'XML è:Ripristina valori predefiniti di Preferenza

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    <CheckBoxPreference android:key="includeAddress" 
        android:title="Include Address" 
        android:summary="" 
        android:defaultValue="true" /> 
    <CheckBoxPreference android:key="rememberName" 
        android:title="Remeber Name" 
        android:summary="" 
        android:defaultValue="false" /> 
</PreferenceScreen> 

Ho modificato i valori mentre ero nell'applicazione. Una volta che l'utente si è disconnesso, deve essere impostato sui valori predefiniti come definito in xml. Ma non sembra funzionare. Mantengono i valori che ho scelto per ultimi.

Letta docs Android, ho trovato questo:

PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.preference_settings, true); 

ma difficilmente fa il lavoro! Ho provato il contrario con SharedPreferences.

SharedPreferences preferences = getParent().getSharedPreferences("preference_settings", MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.clear(); 
editor.commit(); 

Non ha funzionato neanche!

mi sto perdendo qualcosa? Come posso impostare le preferenze sui valori predefiniti definiti nell'XML?

Grazie in anticipo!

risposta

6

le preferenze condivise dovrebbero funzionare, ma si dovrebbe usare le preferenze predefinite condivisa ..

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.clear(); 
editor.commit(); 

Per ottenere le preferenze condivise utilizzando il nome del file, Android crea questo nome (possibilmente in base al nome del pacchetto del progetto ?). Puoi ottenerlo inserendo il seguente codice in SettingsActivity onCreate e vedendo cosa preferenzeName è.

String preferencesName = this.getPreferenceManager().getSharedPreferencesName(); 

La stringa dovrebbe essere qualcosa come "com.example.projectname_preferences". Inserisci il codice hard da qualche parte nel tuo progetto e passalo a getSharedPreferences() e dovresti essere pronto.

AS:

PreferenceManager.getDefaultSharedPreferences(this); 

fornirà un accesso ad un file di preferenze che è globale per l'intero pacchetto di applicazioni; qualsiasi attività può accedere alle preferenze (internaly, il file xml contenente le preferenze sarà denominato your.application.package_preferences.xml).

getParent().getSharedPreferences("preference_settings", MODE_PRIVATE); 

fornirà le preferenze solo per la classe contextInstance: solo le istanze della classe del contesto in grado di accedere a tali preferenze (detto il pacchetto è ancora your.application.package e sei in your.application.package.SecondActivity, internaly il file delle preferenze è SecondActivity.xml).

+0

ho separatamente definito un file xml nella cartella res/xml e viene aggiunto utilizzando addPreferencesFromResource (R.xml.preference_settings); in classe Pref. Ho un'altra classe, Logout, dove cerco di impostare i valori predefiniti. – Renjith

+0

aggiornato la mia risposta – Nermeen

+0

hai buttato giù, bravo! Grazie! – Renjith

Problemi correlati