Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为颜色方法提供默认字符串_Java_Android - Fatal编程技术网

Java 为颜色方法提供默认字符串

Java 为颜色方法提供默认字符串,java,android,Java,Android,我需要为这个方法设置默认值,因为当并没有数据转发给这个方法,但调用了这个方法时,我会崩溃 public int getTagColorFromColorStr(String colorStr) { int color = Color.WHITE; if (colorStr != null && colorStr.length() > 0) { String[] parts = colorStr.split(AppConstant.TAG_CO

我需要为这个方法设置默认值,因为当并没有数据转发给这个方法,但调用了这个方法时,我会崩溃

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"
if (colorStr != null && colorStr.length() > 0 && !colorStr.contains("#"))

谢谢你的回答

Color.White是默认设置为“#FFFFFF”的字符串值。这是十六进制值,不是您需要的值,因为没有要转换的整数。您必须先将其转换为rgb,然后才能将其转换为颜色。 请参阅本页了解如何执行此操作:

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


为了简洁起见,“FF”是255的十六进制,所以白色是255255

colorStr: "0.0,0.0,0.0,1.0"
if (colorStr != null && colorStr.length() > 0 && !colorStr.contains("#"))
这里的问题是使用了#FFFFFF值而不是字符串值“0.0,0.0,0.0,0.0”,所以

试图用逗号分割#FFFFFF,结果导致崩溃