0

我有一个函数可以加载一个颜色数组,我需要在我的列表视图中交替颜色。

我从资源加载一个 xml 数组,这是一个字符串数组,所以我想将它转换为一个颜色数组。我的代码在下面:

public Color[] initColors() {
    String[] allColors = activity.getResources().getStringArray(R.array.colors);

    Color[] colors= new Color[10];
    try { 
        for(int i=0;i<allColors.length || i < 10;i++) {
            String colorstring = allColors[i];
            colors[i] = Color.parseColor(colorstring);
        }

    }catch(IndexOutOfBoundsException oob) {
        oob.printStackTrace();
    }catch(NullPointerException npe){
        //empty
        npe.printStackTrace();
    }
    return colors;

}

现在我得到一个红色下划线和消息:

类型不匹配,无法从 int 转换为 Color

但我绝对确定 colorstring 是一个字符串,那么为什么它说我输入一个 int 呢?Color.parseColor 函数应该使用字符串...

任何想法?我真的不明白,我认为我这样做是正确的,但日食不是

4

2 回答 2

2

Color.parseColor在 java doc 中返回一个 int:

Parse the color string, and return the corresponding color-int. If the string cannot be 
parsed, throws an IllegalArgumentException exception. Supported formats are: #RRGGBB 
#AARRGGBB 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta', 
'yellow', 'lightgray', 'darkgray' 
于 2013-04-10T07:48:08.830 回答
1

给出错误的不是colorString那个,而是这个

colors[i] = Color.parseColor(str);
^^^^^^^^

因为Color#parseColor返回一个int而不是一个Color对象。

因此,int(返回类型 of parseColor())无法转换为的错误Color

于 2013-04-10T07:49:25.417 回答