2015-04-05 147 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