1

我有一些列表首选项,但我不知道如何保存列表中的各个值。我该怎么做?这是我所拥有的

http://i41.tinypic.com/dh4gvo.png

    Preference customPref = (Preference) findPreference("notificationPref");
    customPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {

        public boolean onPreferenceClick(Preference preference) {

            SharedPreferences customSharedPreference = getSharedPreferences(
                    "notifications", Activity.MODE_PRIVATE);
            SharedPreferences.Editor editor = customSharedPreference
                    .edit();
            editor.putString("notification",
                    "The preference has been clicked");
            editor.commit();
            return true;
        }

    });

我的列表单击侦听器仅适用于列表首选项页面中的主要项目,而不适用于弹出窗口本身中的项目。如何保存在弹出窗口中选择的选项?

4

2 回答 2

4

这通常是自动的。在您的首选项屏幕 XML 中,您应该有如下内容:

<ListPreference android:title="@string/Title" 
    android:summary="@string/Summary"
    android:key="PreferenceKey"
    android:defaultValue="VALUE_2"
    android:entries="@array/Entries"
    android:entryValues="@array/Values" />

在您的 strings.xml 中:

<string name="Value1">Text for value 1</string>
<string name="Value2">Text for value 2</string>
<string name="Value3">Text for value 3</string>

<string-array name="Entries">
            <item>@string/Value1</item>
            <item>@string/Value2</item>
            <item>@string/Value2</item>
</string-array>
<string-array name="Values">
            <item>VALUE_1</item>
            <item>VALUE_2</item>
            <item>VALUE_3</item>
</string-array>

“Values”数组指定保存在首选项中的(字符串)值,而“Entries”数组指定显示给用户的项目的文本。每次用户选择一个项目时,它在“Values”数组中的对应值被保存到指定键(本例中为“PreferenceKey”)下的首选项中。

于 2011-12-07T17:11:06.453 回答
2

您可以阅读这样的偏好...

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);

String strSavedMem1 = sharedPreferences.getString("key", "Default Value");
于 2011-12-07T18:26:29.800 回答