Android listpreferences,如何保存个人偏好

时间:2011-12-07 16:48:58

标签: android preferences sharedpreferences listpreference

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

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;
        }

    });

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

2 个答案:

答案 0 :(得分: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”)。

答案 1 :(得分:2)

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

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);

String strSavedMem1 = sharedPreferences.getString("key", "Default Value");