我正在嘗試創建一個非常基本的偏好設置活動,並將其擴展爲PreferenceActivity
。在documentation,我讀:SharedPreferences未使用PreferenceActivity保存
的
PreferenceActivity
自動持續與當用戶改變的每個Preference
相關的設置。
然而,當我:
- 更改設置(任何設置)
- 關閉應用
- 從最近使用過的列表中刪除應用程序
- 重新啓動該應用程序
該設置被重置爲默認值,這似乎與上面引用的文檔衝突。我是否在這裏誤解了某些內容,模板是否有問題,或者我是否需要其他權限或其他設置才能使用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>
的字符串和數組存在,我可以適當地選擇一種語言。當我去其他活動,然後返回時,設置被保存。但關閉應用程序並重新啓動丟棄保存的值。
當我讀出與此首選項相對應的SharedPreference(重新啓動之前)時,我看到了正確的設置。重新啓動後,SharedPreference不再存在了。
它應該工作,你有你的代碼在線? – 2015-04-05 19:23:47
@MickeyTin不,我可以。整個項目?可能需要一段時間(取回API密鑰等),但我會回報。 – Keelan 2015-04-05 19:24:30
只顯示SettingActivity – 2015-04-05 19:25:34