2013-01-05 195 views
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:

int colorint = Color.BLUE; 

它的工作原理..但有什麼地方錯了我不知道。

非常感謝

回答

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); 
+0

我應該怎麼辦呢? – Jakob

+0

我編輯了我的答案 – Ahmad

+2

@Jakob:嘗試使用'Color.parseColor' –

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"