我有一个包含名称和颜色代码的数组。我想用从数组中获取的颜色为 gridview 中的单元格着色。我创建了这段代码,但我得到了 NPE,这是错误:
Logcat 输出:
Caused by: java.lang.NullPointerException
10-06 11:03:30.513 25902-25902/? E/AndroidRuntime:
at android.graphics.Color.parseColor(Color.java:211)
颜色 XML 文件:
<array name="colors">
<item name="White">#FFFFFF</item>
<item name="Ivory">#FFFFF0</item>
<item name="LightYellow">#FFFFE0</item>
<item name="Yellow">#FFFF00</item>
<item name="Snow">#FFFAFA</item>
<item name="FloralWhite">#FFFAF0</item>
</array>
源代码:
public class ColorPickerAdapter extends BaseAdapter {
private Context context;
private List<Integer> colorList = new ArrayList<Integer>();
public ColorPickerAdapter(Context context) {
this.context = context;
String colors[] = context.getResources().getStringArray(R.array.colors);
colorList = new ArrayList<Integer>();
// add the color array to the list
for (int i = 0; i < colors.length; i++) {
colorList.add(Color.parseColor(colors[i]));
}
[..]
最佳答案
您的资源似乎有误。你应该做什么
方法一
在 colors.xml 中
<color name="Ivory">#FFFFF0</color>
<color name="LightYellow">#FFFFE0</color>
<color name="Yellow">#FFFF00</color>
<color name="Snow">#FFFAFA</color>
<color name="FloralWhite">#FFFAF0</color>
在 arrays.xml 中:
<array name="colors">
<item>@color/Ivory</item>
<item>@color/LightYellow</item>
<item>@color/Yellow</item>
<item>@color/Snow</item>
</array>
然后使用
访问int[] colors = context.getResources().getIntArray(R.array.colors);
for (int i = 0; i < tileColumns; i++) {
colorList.add(colors[i]);
}
方法二
不要指定不同颜色的名称
<resources>
<string-array name="colors">
<item>#FFFFF0</item>
<item>#FFFFE0</item>
<item>#FFFF00</item>
<item>#FFFAFA</item>
<item>#FFFAF0</item>
</string-array>
</resources>
并使用它使用
String colors[] = context.getResources().getStringArray(R.array.colors);
colorList = new ArrayList<Integer>();
// add the color array to the list
for (int i = 0; i < colors.length; i++) {
colorList.add(Color.parseColor(colors[i]));
}
关于android从资源中获取颜色列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33627551/