color.xml中的color-array为所有项返回null。

时间:2016-02-15 11:39:16

标签: android null nullable

我在color.xml中制作了一个包含12种不同颜色的颜色数组。 但是在我尝试提取颜色并在代码中使用它时,我对数组中的所有值都为null。我也尝试使用TypedArray解决方案没有区别。那有什么不对?

    public void testColor(){

    Resources resources = App.getAppContext().getResources();
    String colors[] = resources.getStringArray(R.array.backgroundcolors);

    //prints null
    Log.d("TAG", " " + colors[3]);

    //prints 12x null 
    for(String x : colors){
        Log.d("TAG", " " + x);

    }
}


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    testColor();
}

color.xml

<array name="backgroundcolors">
    <item>#000000</item>
    <item>#373737</item>
    <item>#ffffff</item>
    <item>#e6e6e6</item>
    <item>#EAE1D8</item>
    <item>#fd79a1</item>
    <item>#ff0f68</item>
    <item>#E849A1</item>
    <item>#F7E84E</item>
    <item>#FFB732</item>
    <item>#48B1E3</item>
    <item>#5dd95d</item>
</array>

4 个答案:

答案 0 :(得分:3)

改变:

 <array name="backgroundcolors">

<string-array name="backgroundcolors">

答案 1 :(得分:1)

如果您想使用getStringArray,则应该使用

<string-array 

以root标记代替<array,内容应放在strings.xml中。 Colorsint。您可以使用getIntArrayarray

中检索int res

答案 2 :(得分:0)

您可以使用

 Color.parseColor(colors[i]))


Color.parseColor("#636161")

答案 3 :(得分:0)

解决方案1 ​​

你应该把这个数组作为这个

的int数组
int colors[] = resources.getIntArray(R.array.backgroundcolors);

解决方案2

如果您想将其作为String数组读取,那么

变化

<array name="backgroundcolors">

<string-array name="backgroundcolors">