2012-03-06 36 views
7

Tôi có user_preferences.xml trong thư mục xml của mình. Một PreferencesActivity sử dụng tệp này để tạo hoạt động tùy chọn người dùng .. và nó hoạt động. Bất cứ điều gì người dùng chọn ở đây vẫn tồn tại. Nhưng tôi không thể truy xuất giá trị mà người dùng đã chọn.Tại sao preferences.getString ("key", "DEFAULT") luôn trả về "DEFAULT"?

Khi tôi sử dụng ...

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

... mapTypeString luôn luôn là "DEFAULT".

Có vẻ như không tìm thấy user_preferences.xml khi tôi khởi tạo đối tượng SharedPreferences của mình. Nhưng, PreferencesActivity tìm thấy nó, tất nhiên. Vì vậy, tôi đang thiếu gì?

Rất cám ơn!

+0

bạn có chắc là bạn đang đọc cùng một tệp tùy chọn không? – SERPRO

+0

Trong onCreate() trong PreferenceActivity của tôi, tôi sử dụng \t \t addPreferencesFromResource (R.xml.user_preferences); Vì vậy, có lẽ tôi cần phải trỏ đến tập tin khác nhau khi tôi tạo đối tượng SharedPreferences? – Hap

+0

@SERPRO có vấn đề gì vì xml nằm trong thư mục xml? – Hap

Trả lời

9

thay đổi mã của bạn để:

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

Điều đó có hiệu quả, cảm ơn bạn. Nhưng tôi vẫn còn một chút bối rối ... Tôi sử dụng một xml khác cũng lưu trữ các sở thích trong cùng một Activity. Tại sao getDefaultSharedPreferences cung cấp cho tôi user_preferences.xml và không phải tệp kia, settings.xml? – Hap

0

Bạn phải cam kết các ưu đãi sau khi chỉnh sửa nó.

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

"Nhưng tôi không thể truy lục giá trị mà người dùng đã chọn". Anh ta muốn lấy, không thay đổi. –

Các vấn đề liên quan