我需要为此方法设置默认值,因为当没有数据转发到方法时我崩溃了,但是调用了方法。
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"
感谢答案!
答案 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,这导致了崩溃。