我在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>
答案 0 :(得分:3)
改变:
<array name="backgroundcolors">
到
<string-array name="backgroundcolors">
答案 1 :(得分:1)
如果您想使用getStringArray
,则应该使用
<string-array
以root标记代替<array
,内容应放在strings.xml
中。 Colors
是int
。您可以使用getIntArray从array
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">