0

我有一个 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>

数组.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 小时”,然后看到 value = 180 - 为什么?

为什么我看到这些值 (60, 180)?哪儿来的呢?

更新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 看到了首选项文件,并看到系统写入了错误的值。

4

1 回答 1

0

问题出在 Idea 12CE 中,我删除了项目并再次导入它......问题就解决了。

于 2014-10-29T15:12:51.393 回答