我有一个Preference活动,它使用由我的XML文件定义的List Preferences:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="sync">
<ListPreference
android:key="key_sync_period"
android:title="Sync"
android:summary="%s"
android:dialogTitle="Sync frequency"
android:entries="@array/sync_period_entries"
android:entryValues="@array/sync_period_values"
android:defaultValue="1800" />
</PreferenceCategory>
</PreferenceScreen>
arrays.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="sync_period_entries">
<item>15 min</item>
<item>30 min</item>
<item>45 min</item>
<item>1 hour</item>
</string-array>
<string-array name="sync_period_values">
<item>900</item>
<item>1800</item>
<item>2700</item>
<item>3600</item>
</string-array>
</resources>
当我启动我的应用程序,更改此设置时,我会看到以下内容:
- 应用程序写入defaultSharedPreference文件值=1800
- 我把它改为"15分钟",看到值=900-好吧,好吧
- 我将其更改为"45分钟",并看到值=60-
- 我将其更改为"1小时",然后看到值=180-
- 我再次将其更改为"30分钟",并看到值=1800
- 我将其更改为"1小时",然后看到值=180-为什么
为什么我看到这些值(60180)?它们是从哪里来的?
更新1:
if (key.equals("key_sync_period"))
{
ListPreference syncPref = (ListPreference) findPreference(key);
syncPref.setSummary(syncPref.getEntry());
long seconds = Long.valueOf(sharedPreferences.getString(key, "1800"));
}
系统写入defaultSharedPreferences。我从ddms中看到了首选项文件,发现系统写入了错误的值。
问题出现在Idea 12CE中,我删除了该项目并再次导入。。。问题解决了。