无法让listPreference在Android中运行

时间:2013-02-10 14:42:45

标签: android listpreference

我尝试在这里和谷歌上寻找答案,但没有达到目标。

我正在尝试在Android平台上执行listPreference,允许用户选择文字颜色。目前它只返回默认值,我不太清楚为什么我的if / else语句不起作用。

的prefs.xml:

    <ListPreference
    android:title="textcolorpreference"
    android:key="list1"
    android:summary="Text Color"
    android:entries="@array/list"
    android:entryValues="@array/lValues"
    />

array.xml:

     <string-array name="list">
    <item>Red</item>
    <item>Green</item>
    <item>Blue</item>
    <item>Yellow</item>
    </string-array>
    <string-array name="lValues">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    </string-array>

爪哇:

    SharedPreferences getPrefs =
    PreferenceManager.getDefaultSharedPreferences(getBaseContext());


        String values = getPrefs.getString("list", "2");

        if(values.contentEquals("1")){
            tp.setColor(Color.RED);
        } else if(values.contentEquals("2")){
            tp.setColor(Color.GREEN);
        } else if(values.contentEquals("3")){
            tp.setColor(Color.BLUE);
        }else if(values.contentEquals("4")){
            tp.setColor(Color.YELLOW);
        }

目前只有列表首选项的默认值才有效,例如如果我将listPreference默认值设为String values = getPrefs.getString("list", "2")我得到color.GREEN这让我觉得我需要添加一个偏好更改的监听器,但我目前无法实现它。

我非常感谢你们能提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以从优先级 list1

中检索正确的整数
Integer values = getPrefs.getInt("list1", 2);

然后您可以从检索到的值切换:

switch(values ) {
    case 1:
        tp.setColor(Color.RED);
        break;
    case 2:
        tp.setColor(Color.GREEN);
        break;
    case 3:
        tp.setColor(Color.BLUE);
        break;
    case 4:
        tp.setColor(Color.YELLOW);
        break;
    default:
        tp.setColor(Color.GREEN);
}