使用ListPreference更改背景颜色

时间:2014-02-28 04:52:35

标签: android background-color listpreference

我正在尝试使用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没有链接在一起。我不知道我做错了什么。

1 个答案:

答案 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>