2012-12-07 20 views
7

Używam ekranu CheckBoxPreference dla ustawień. Kod XML to:Resetuj domyślne wartości Preferencji

<?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> 

Zmieniam wartości w aplikacji. Po wylogowaniu użytkownika należy ustawić wartości domyślne zgodnie z definicją w pliku XML. Ale wydaje się, że nie działa. Trzymają te wartości, które wybrałem jako ostatnie.

Po przeczytaniu Android docs, znalazłem to:

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

Ale to ledwie spełnia swoje zadanie! Próbowałem na odwrót za pomocą SharedPreferences.

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

To też nie działa!

Czy brakuje mi czegoś? Jak mogę ustawić preferencje do ich domyślnych wartości zdefiniowanych w XML?

Z góry dzięki!

Odpowiedz

6

wspólne preferencje powinny działać, ale należy użyć domyślnych wspólne preferencje ..

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

Aby uzyskać wspólne preferencje używając nazwy pliku, Android tworzy tę nazwę (ewentualnie na podstawie nazwy pakietu Twojego projektu ?). Możesz go uzyskać, umieszczając następujący kod w UstawieniachAktywność onCreate i sprawdzając, co to jest PreferencesName.

Łańcuch powinien wyglądać jak "com.example.projectname_preferences". Twardy kod, który gdzieś w projekcie, i przekazać go do getSharedPreferences() i powinieneś być dobry.

AS:

PreferenceManager.getDefaultSharedPreferences(this); 

zapewni dostęp do pliku preferencji, który jest globalny dla całego pakietu aplikacji; dowolna aktywność może uzyskać dostęp do preferencji (internaly, plik xml z preferencjami zostanie nazwany your.application.package_preferences.xml).

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

Zapewni preferencje tylko dla klasy contextInstance: Tylko instancje klasy kontekście mogą uzyskać dostęp do tych preferencji (wspomniany pakiet jest nadal your.application.package i jesteś w your.application.package.SecondActivity, wewnętrznie plik preferencji jest SecondActivity.xml).

+0

Osobno zdefiniowałem plik xml w folderze res/xml i dodałem go za pomocą metody addPreferencesFromResource (R.xml.preference_settings); w klasie Prefs. Mam inną klasę, Logout, gdzie próbuję ustawić wartości domyślne. – Renjith

+0

zaktualizowałam moją odpowiedź – Nermeen

+0

powaliłeś to, brawo! Dzięki! – Renjith

Powiązane problemy