Android:java.lang.IllegalArgumentException:未知颜色

时间:2011-11-22 10:19:54

标签: android colors

当我尝试运行以下代码时出现上述错误:

int colourInt = Color.parseColor(colour.getHexValue());

违规的十六进制值为ee3090b0。有没有办法可以将颜色十六进制值转换为等价的整数并保持alpha值? 我已经尝试按照post中提出的建议,但它无法正常工作......

3 个答案:

答案 0 :(得分:47)

来自documentation

  

public static int parseColor(String colorString)

     

解析颜色字符串,并返回相应的color-int。如果   无法解析字符串,抛出 IllegalArgumentException 异常。   支持的格式为:#RRGGBB #AARRGGBB' red',' blue',' green',   ' black',' white',' grey',' cyan',' magenta',' yellow& #39;,' lightgray',   '深灰'

您的方法可能会返回一个不以#开头的字符串。

答案 1 :(得分:0)

将其包装在try catch块中,并在catch块中设置默认颜色以处理异常

例如,我正在从Firebase远程配置中解析一种颜色,如果该颜色的获取引发了hgrc,则我将该颜色设置为我的应用程序中的默认颜色。

IllegalArgumentException

这样做可以避免应用程序致命崩溃

答案 2 :(得分:0)

我想添加一些已被接受的答案。在尝试使用以Color.parseColor("#000")开头的#使用黑色时,我遇到了类似的异常。因此,问题在您的parseColor方法内部,它仅接受六位数的彩色十六进制代码,如果它小于或大于此值,则给出例外。我将其更改为#121212(黑色),它对我有用。