String ColorString = "Color.BLUE";
int colorint = Integer.parseInt(ColorString);
...
views.setTextColor(R.id.tvConfigInput, colorint);
为什么会崩溃?在logcat中,我得到java.lang.numberformatexception: Invalid int "Color.BLUE"
我认为它在从字符串转换为int时是错误的,因为如果我只是像这样设置int:
int colorint = Color.BLUE;
它有效..但我不知道它有什么问题。
非常感谢
答案 0 :(得分:5)
Color.Blue
的常量值为:-16776961(0xff0000ff)。你没有解析int,你只是试图解析一个字符串并将其转换为int(这将无法工作)。
“Color.BLUE”不是整数,但Color.BLUE
最终会返回一个常量值。
你需要这样做才能做到正确:
int colorInt = Color.BLUE;
views.setTextColor(R.id.tvConfigInput, colorInt);
编辑:
String ColorString = "BLUE";
int colorInt = Color.parseColor(ColorString);
views.setTextColor(R.id.tvConfigInput, colorInt);
答案 1 :(得分:1)
您是否尝试过使用枚举?
public enum Color{
BLUE(42);
private int hex;
Color(int hex){
this.hex = hex;
}
public int getHexCode(){return hex;}
public String getName(){ return this.name();}
}
这样您就可以分配可以表示多个值的字符串文字
Color.BLUE.getHext() == 42
Color.BLUE.name() == "BLUE"