SharedPreferences 未使用 PreferenceActivity 保存
SharedPreferences not saved using PreferenceActivity
我正在尝试创建一个非常基本的首选项 activity,扩展 PreferenceActivity
。在documentation,我读到:
The PreferenceActivity
automatically persists the settings associated with each Preference
when the user makes a change.
然而,当我:
- 更改设置(任何设置)
- 关闭应用程序
- 从最近使用列表中删除该应用程序
- 重新启动应用程序
设置重置为默认值,这似乎与上面引用的文档冲突。我是否在这里误解了什么,模板是否有问题,或者我可能需要额外的权限或其他设置才能使用 PreferenceActivity 自动保留功能?
public class SettingsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment()).commit();
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
}
和preferences.xml
:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:key="pref_language_reading"
android:title="@string/pref_title_language_dailyreading"
android:entries="@array/pref_languages_dailyreading_entries"
android:entryValues="@array/pref_languages_dailyreading_values"
android:defaultValue="@string/pref_language_dailyreading_default"
android:persistent="true" />
</PreferenceScreen>
字符串和数组存在,我可以select一种语言。当我转到另一个 activity,然后返回时,设置被保存。但是关闭应用程序并重新启动会丢弃保存的值。
当我读出与此首选项对应的 SharedPreference 时(重新启动之前),我看到了正确的设置。重新启动后,SharedPreference 不再存在。
代码应该可以工作。您的代码中可能有其他原因导致此行为。
在我的具体情况下,原来有一行
PreferenceManager.getDefaultSharedPreferences(this).edit().clear().commit();
在主要 Activity
的 onCreate()
方法中,导致 SharedPreferences 在每次启动应用程序时 清除 。
我正在尝试创建一个非常基本的首选项 activity,扩展 PreferenceActivity
。在documentation,我读到:
The
PreferenceActivity
automatically persists the settings associated with eachPreference
when the user makes a change.
然而,当我:
- 更改设置(任何设置)
- 关闭应用程序
- 从最近使用列表中删除该应用程序
- 重新启动应用程序
设置重置为默认值,这似乎与上面引用的文档冲突。我是否在这里误解了什么,模板是否有问题,或者我可能需要额外的权限或其他设置才能使用 PreferenceActivity 自动保留功能?
public class SettingsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment()).commit();
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
}
和preferences.xml
:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:key="pref_language_reading"
android:title="@string/pref_title_language_dailyreading"
android:entries="@array/pref_languages_dailyreading_entries"
android:entryValues="@array/pref_languages_dailyreading_values"
android:defaultValue="@string/pref_language_dailyreading_default"
android:persistent="true" />
</PreferenceScreen>
字符串和数组存在,我可以select一种语言。当我转到另一个 activity,然后返回时,设置被保存。但是关闭应用程序并重新启动会丢弃保存的值。
当我读出与此首选项对应的 SharedPreference 时(重新启动之前),我看到了正确的设置。重新启动后,SharedPreference 不再存在。
代码应该可以工作。您的代码中可能有其他原因导致此行为。
在我的具体情况下,原来有一行
PreferenceManager.getDefaultSharedPreferences(this).edit().clear().commit();
在主要 Activity
的 onCreate()
方法中,导致 SharedPreferences 在每次启动应用程序时 清除 。