0

我尝试在这里和谷歌上搜索答案,但没有成功。

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

首选项.xml:

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

数组.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,这让我认为我需要添加一个首选项更改的侦听器,但我目前无法实现它。

对于你们能够提供的任何帮助,我将不胜感激!

4

1 回答 1

1

您可以从首选项列表中检索正确的整数1

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);
}
于 2013-02-10T14:47:21.463 回答