解析颜色不再适用于十六进制值

这很奇怪,我以前用过这个功能。然而它似乎已经停止工作,我不知道为什么。

我用来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)

这似乎是正确的十六进制颜色,所以我不确定为什么它会导致此异常。

有人有什么主意吗?


收到一只叮咚
浏览 72回答 1
1回答

慕的地10843

正如您从 中看到的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()并确保 之前没有任何字符#。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java