Сбросить значения по умолчанию для предпочтений

Я использую CheckBoxPreference для экрана настроек. XML:

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

Я изменяю значения в приложении. После выхода из системы пользователь должен установить значения по умолчанию, определенные в xml. Но, похоже, это не работает. Они сохраняют те значения, которые я выбрал в прошлом.

Прочитав документы Android, я нашел следующее:

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

Но это вряд ли делает работу! Пробовал по-другому с SharedPreferences.

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

Это тоже не сработало!

Я что-то упускаю? Как я могу настроить предпочтения по умолчанию, определенным в XML?

Заранее спасибо!

Общие настройки должны работать, но вы должны использовать общие настройки по умолчанию.

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

Чтобы получить общие настройки с использованием имени файла, Android создает это имя (возможно, на основе имени пакета вашего проекта?). Вы можете получить его, поместив следующий код в ConfigurationActivity onCreate и посмотрев, что такое preferencesName.

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

Строка должна быть чем-то вроде «com.example.projectname_preferences». Жесткий код, который где-то в вашем проекте, и передать его в getSharedPreferences (), и вам должно быть хорошо идти.

В ВИДЕ:

  PreferenceManager.getDefaultSharedPreferences(this); 

Предоставляет доступ к файлу предпочтений, который является глобальным для всего пакета приложений; Любая деятельность может получить доступ к предпочтениям (internaly, xml-файл, содержащий предпочтения, будет иметь имя your.application.package_preferences.xml ).

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

Предоставляет предпочтения только для класса contextInstance: только экземпляры класса контекста могут получить доступ к этим предпочтениям (говорит, что ваш пакет по-прежнему является your.application.package и вы находитесь в your.application.package.SecondActivity , internaly файл настроек – SecondActivity.xml ).