2013-01-05 1 views
2
String ColorString = "Color.BLUE"; 

    int colorint = Integer.parseInt(ColorString); 

    ... 

    views.setTextColor(R.id.tvConfigInput, colorint); 

왜 이런 오류가 발생합니까? 로그 캣에서 내가 얻을 java.lang.numberformatexception: Invalid int "Color.BLUE"문자열을 int로 변환하십시오.

내가 좀 자사의 문자열에서 변환에 난 그냥이 같은 INT를 설정하면 있기 때문에, 잘못 int로 생각

:

int colorint = Color.BLUE; 

작동 ...하지만 그것으로 잘못 나는 모른다.

THANKS 매우

답변

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"