为color方法提供默认字符串

时间:2015-11-18 13:49:23

标签: java android

我需要为此方法设置默认值,因为当没有数据转发到方法时我崩溃了,但是调用了方法。

public int getTagColorFromColorStr(String colorStr) {
    int color = Color.WHITE;
    if (colorStr != null && colorStr.length() > 0) {
        String[] parts = colorStr.split(AppConstant.TAG_COLOR_STR_SEPEATOR);

        double red = Double.parseDouble(parts[0]) * 255;
        double green = Double.parseDouble(parts[1]) * 255;
        double blue = Double.parseDouble(parts[2]) * 255;
        double alpha = Double.parseDouble(parts[3]);

        // AppDebugLog.println("double color in getTagColorFromColorStr : "
        // + red + " : " + green + " : " + blue
        // + " : " + alpha);
        color = Color.rgb((int) red, (int) green, (int) blue);

    }

崩溃的堆栈描述说:

 11-18 14:45:57.767 28001-28001/com.mps.itickle E/AndroidRuntime: java.lang.NumberFormatException: Invalid double: "#FFFFFF"

工作时提供给方法的值如下所示:

colorStr: "0.0,0.0,0.0,1.0"

感谢答案!

2 个答案:

答案 0 :(得分:1)

Color.White是您默认的字符串值:“#FFFFFF”。这是十六进制值而不是您需要的值,因为没有要转换的整数。在将其变为彩色之前,必须将其转换为rgb。 请参阅此页面了解如何执行此操作:convert-hex-to-rgb

之后转换alpha很简单。它只是为剩余的十六进制值重复相同的行为。

为简洁起见,“FF”为255的十六进制,因此白色为255,255,255

答案 1 :(得分:0)

修复此处就是修复此行:

if (colorStr != null && colorStr.length() > 0 && !colorStr.contains("#"))

这里的问题是使用#FFFFFF值代替字符串值" 0.0,0.0,0.0,0.0",所以

 String[] parts = colorStr.split(AppConstant.TAG_COLOR_STR_SEPEATOR);

尝试用逗号分割#FFFFFF,这导致了崩溃。