2012-03-06 22 views
7

Mam user_preferences.xml w moim katalogu xml. PreferencesActivity używa tego pliku do tworzenia aktywności preferencji użytkownika .. i to działa. Cokolwiek użytkownik wybierze tutaj, nie ustępuje. Ale nie mogę odzyskać wartości wybranej przez użytkownika.Dlaczego preferences.getString ("key", "DEFAULT") zawsze zwraca "DEFAULT"?

Gdy używam ...

SharedPreferences preferences = getSharedPreferences("user_preferences.xml", 0);  
    String mapTypeString = preferences.getString("map_type_pref_key", "DEFAULT"); 

... mapTypeString zawsze jest "default".

Wygląda na to, że mój plik user_preferences.xml nie został znaleziony podczas tworzenia obiektu SharedPreferences. Ale PreferencjeActivity to oczywiście znajduje. Więc, czego mi brakuje?

Wielkie dzięki!

+0

Czy jesteś pewien, że czytasz ten sam plik preferencji? – SERPRO

+0

W onCreate() w moim PreferenceActivity, używam \t \t addPreferencesFromResource (R.xml.user_preferences); Więc może muszę wskazywać plik inaczej, gdy utworzyć obiekt SharedPreferences? – Hap

+0

@SERPRO jest jakiś problem, ponieważ xml znajduje się w katalogu xml? – Hap

Odpowiedz

9

zmienić swój kod do:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
String mapTypeString = preferences.getString("map_type_pref_key", "DEFAULT"); 
+2

To działa, dziękuję. Ale nadal jestem trochę zdezorientowany ... Używam innego xml, który również przechowuje preferencje w tym samym działaniu. Dlaczego getDefaultSharedPreferences daje mi user_preferences.xml, a nie inne, settings.xml? – Hap

0

Musisz popełnić preferencje po edycji.

SharedPreferences preferences = getSharedPreferences("user_preferences.xml", 0); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("map_type_pref_key", "blah_blah"); 
editor.commit(); 
+2

"Ale nie mogę odzyskać wartości wybranej przez użytkownika." Chce odzyskać, a nie zmieniać. –

Powiązane problemy