我尝试在这里和谷歌上寻找答案,但没有达到目标。
我正在尝试在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
这让我觉得我需要添加一个偏好更改的监听器,但我目前无法实现它。
我非常感谢你们能提供的任何帮助!
答案 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);
}