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,结果导致崩溃