如何从ListPreference获取选定选项?

7

我有一个ListPreference,它包含了例如5个选项,我想在用户选择其中一个选项时将该值保存到SharedPreferences中。我该怎么做?

顺便说一句,我知道如何将值保存到SharedPreferences中,但我不知道当用户选择其中一个选项时如何获取该值。

3个回答

9
OnPreferenceChangeListener listener = new OnPreferenceChangeListener() {    
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        // newValue is the value you choose
        return true;
    }
};

listPreference.setOnPreferenceChangeListener(listener);

6
我这样访问我的文件。请参见以下示例。
在我的preference.xml文件中:
<ListPreference
            android:key="SQS_ENDPOINT"
            android:dialogTitle="Choose an option please"
            android:entries="@array/sqsItems"
            android:entryValues="@array/sqsValues"
            android:title="SQS Endpoints" >
        </ListPreference>

我的 String.xml:

<string-array name="sqsItems">
        <item>US East (N. Virginia)</item>
        <item>Asia Pacific (Singapore)</item>
        <item>Asia Pacific (Tokyo)</item>
    </string-array>
    <string-array name="sqsValues">
        <item>sqs.us-east-1.amazonaws.com</item>
        <item>sqs.ap-southeast-1.amazonaws.com</item>
        <item>sqs.ap-northeast-1.amazonaws.com</item>
    </string-array>

然后我可以从任何地方按照以下方式获取所选的值:

SharedPreferences pref = PreferenceManager
                .getDefaultSharedPreferences(context);
        String END_POINT = pref.getString("SQS_ENDPOINT", "");

2
在您的xml文件中,您为列表提供了SharedPreferences键。
<ListPreference
android:key="SHARED_PREFS_KEY"
...
/>

每次用户从列表中选择一个项目,它都会保存到默认的SharedPreferences中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接