这很奇怪,我以前用过这个功能。然而它似乎已经停止工作,我不知道为什么。我用来Color.parseColor设置项目的背景颜色。这是执行此操作的代码:imgItemImage.setBackgroundColor(Color.parseColor(cartItem.get("picture")));我收到这个异常:java.lang.NumberFormatException:对于输入字符串:“#837A67”和 java.lang.Long.parseLong(Long.java:579)在 android.graphics.Color.parseColor(Color.java:1386)这似乎是正确的十六进制颜色,所以我不确定为什么它会导致此异常。有人有什么主意吗?
1 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
正如您从 中看到的Exception
,问题在于何时Long.parseLong()
从内部调用Color.parseColor()
。
这Exception
是由于给Long.parseLong()提供了错误的输入,这是 的额外字符#
,通常应在Color.parseColor()
内部调用之前将其删除Long.parseLong()
。
您的代码抛出的问题Exception
可以如下所示:
String str = "#837A67"; System.out.println(Long.parseLong(str, 16));
16
十六进制的 RADIX 是 哪里。
但试试这个:
String str = "837A67"; System.out.println(Long.parseLong(str, 16));
并且您将得到预期的结果。
这表明String
传递parseColor
是不正确的,因为很可能是由于不同的#
字符被删除而没有被删除。 Color.parseColor()
仔细检查您传递给的值Color.parseColor()
并确保 之前没有任何字符#
。
添加回答
举报
0/150
提交
取消