2012-12-07 7 views
7

Tôi đang sử dụng CheckBoxPreference cho màn hình cài đặt. XML là:Đặt lại giá trị mặc định của Sở thích

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

Tôi thay đổi giá trị trong khi đăng ký. Khi người dùng đăng xuất, nó phải được đặt thành giá trị mặc định như được xác định trong xml. Nhưng, nó dường như không hoạt động. Họ giữ những giá trị mà tôi đã chọn cuối cùng.

Sau khi đọc tài liệu Android, tôi thấy điều này:

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

Nhưng nó hầu như không làm được việc! Đã thử theo cách khác với SharedPreferences.

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

Nó không hoạt động!

Tôi có thiếu gì đó không? Làm cách nào tôi có thể đặt tùy chọn cho các giá trị mặc định của chúng được xác định trong XML?

Cảm ơn trước!

Trả lời

6

các ưu đãi chia sẻ nên làm việc, nhưng bạn nên sử dụng các thiết lập mặc định chia sẻ ..

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

Để có được ưu đãi về chia sẻ sử dụng tên tập tin, Android tạo ra tên này (có thể dựa vào tên gói của dự án của bạn ?). Bạn có thể lấy nó bằng cách đặt đoạn mã sau vào một SettingActivity onCreate và xem preferencesName là gì.

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

Chuỗi phải giống như "com.example.projectname_preferences". Mã cứng ở đâu đó trong dự án của bạn và chuyển nó vào getSharedPreferences() và bạn nên làm tốt.

AS:

PreferenceManager.getDefaultSharedPreferences(this); 

sẽ cung cấp quyền truy cập vào một tập tin sở thích đó là toàn cầu cho gói ứng dụng tổng thể; bất kỳ hoạt động nào cũng có thể truy cập các tùy chọn (nội bộ, tệp xml giữ các tùy chọn sẽ có tên là your.application.package_preferences.xml).

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

sẽ cung cấp các ưu đãi chỉ dành cho các lớp contextInstance: chỉ trường hợp của lớp của bối cảnh có thể truy cập vào các sở thích (nói gói của bạn vẫn là your.application.package và bạn đang ở your.application.package.SecondActivity, internaly các ưu đãi file là SecondActivity.xml).

+0

Tôi đã xác định riêng tệp xml trong thư mục res/xml và được thêm bằng cách sử dụng addPreferencesFromResource (R.xml.preference_settings); trong lớp Prefs. Tôi có một lớp khác, Đăng xuất, nơi tôi cố gắng đặt giá trị mặc định. – Renjith

+0

đã cập nhật câu trả lời của tôi – Nermeen

+0

bạn đã xóa nó xuống! Cảm ơn! – Renjith