我正在尝试使用listPreference更改活动的背景颜色。我已经编写了一些代码,但它直接用于黄色。
这是字符串数组:
<string-array name="backgroundColors">
<item name="1">Red</item>
<item name="2">Green</item>
<item name="3">Blue</item>
<item name="4">Yellow</item>
</string-array>
<string-array name="backgroundColorEntries">
<item name="1">#FF0000</item>
<item name="2">#00FF00</item>
<item name="3">#0000FF</item>
<item name="4">#FFFF00</item>
</string-array>
这是我在XML文件中创建列表的地方:
<ListPreference
android:key="prefSetBackground"
android:entries="@array/backgroundColors"
android:summary="Set the background color of the main page."
android:entryValues="@array/backgroundColorEntries"
android:title="@string/pref_1" />
最后,这是Java部分:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
SharedPreferences getPrefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
String background_chooser = getPrefs
.getString("prefSetBackground", "0");
View view = findViewById(R.id.main_layout);
if (background_chooser.equals("1")) {
view.setBackgroundColor(Color.RED);
} else if (background_chooser.equals("2")) {
view.setBackgroundColor(Color.GREEN);
} else if (background_chooser.equals("3")) {
view.setBackgroundColor(Color.BLUE);
} else {
view.setBackgroundColor(Color.YELLOW);
}
super.onWindowFocusChanged(hasFocus);
}
我觉得我在这里做错了但是我不确定是什么。我是新手使用ListPreferences所以请耐心等待。
提前致谢。
编辑:从我在手机上运行的应用程序结束时我可以看出,它默认为最后一部分意味着红色,蓝色和绿色返回错误。背景颜色变黄。当我改变偏好时,没有任何反应。
编辑#2:似乎listpreference和Java没有链接在一起。我不知道我做错了什么。答案 0 :(得分:2)
试试这个
String background_chooser = getPrefs
.getString("prefSetBackground", "1");
而不是
String background_chooser = getPrefs
.getString("prefSetBackground", "0");
修改:还在pref xml文件中设置android:defaultValue="1"
。
所以现在你的列表pref xml应该是这样的
<ListPreference
android:key="prefSetBackground"
android:entries="@array/backgroundColors"
android:summary="Set the background color of the main page."
android:entryValues="@array/backgroundColorEntries"
android:title="@string/pref_1"
android:defaultValue="1" />
您还需要替换此
<string-array name="backgroundColorEntries">
<item name="1">#FF0000</item>
<item name="2">#00FF00</item>
<item name="3">#0000FF</item>
<item name="4">#FFFF00</item>
</string-array>
通过这个
<string-array name="backgroundColorEntries">
<item name="1">1</item>
<item name="2">2</item>
<item name="3">3</item>
<item name="4">4</item>
</string-array>