2
    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;

它有效..但我不知道它有什么问题。

非常感谢

4

2 回答 2

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);
于 2013-01-05T18:06:13.093 回答
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"
于 2013-01-05T20:15:24.257 回答