2015-04-05 108 views
0

我正在嘗試創建一個非常基本的偏好設置活動,並將其擴展爲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不再存在了。

+0

它應該工作,你有你的代碼在線? – 2015-04-05 19:23:47

+0

@MickeyTin不,我可以。整個項目?可能需要一段時間(取回API密鑰等),但我會回報。 – Keelan 2015-04-05 19:24:30

+0

只顯示SettingActivity – 2015-04-05 19:25:34

回答

0

該代碼應該工作。在你的代碼中可能會有其他的東西導致這種行爲。

在我的特定情況下,原來有一條線

PreferenceManager.getDefaultSharedPreferences(this).edit().clear().commit(); 

在主ActivityonCreate()方法,使SharedPreferences到明確在每次啓動的應用程式。

+0

發生).......... – 2015-04-06 10:15:16