为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

收到一只叮咚 2023-08-16 16:32:53
这很奇怪,我以前用过这个功能。然而它似乎已经停止工作,我不知道为什么。我用来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()并确保 之前没有任何字符#


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信