2014-12-21 1 views
3

eclipse의 이상한 동작을 발견했습니다. 그것은 정말 짜증나getResources(). getColor (R.color.Black)와 직접 R.color.Black의 차이점

if(colorID == R.color.Black) 
    //sometimes it works 

가끔 내가

if(colorID == getResources().getColor(R.color.Black)); 

를 사용해야합니다 :

public static colorID = R.color.Black; 

이 때로는 R.color.Black와 일치 :

II

정적 변수가 코드가 큰지 테스트하여 오류를 찾으십시오.

그래서 왜 때로는 왜 작동하지 않는지, 왜 반환 정수가 때로는 다른지 때때로 이해하지 못하는지 알고 싶습니다. 그들은 내 values 폴더에 내 사용자 정의 color.xml 파일의 R.color.Black을 참조합니다. 그럼 왜 때로는 다른가요?

+0

'final' 키워드를 추가하십시오 :'public static final colorID = R.color.Black;'. 내 생각 엔'colorID' 값을 여러 위치에 다른 값으로 할당한다는 것을 알게 될 것입니다. – CommonsWare

+1

'getColor()'는 색상 값이 아니라 색상 값을 반환한다는 점에 유의하십시오. 이와 같이 일치하면 값과 ID를 섞어서 어딘가에 버그가 있습니다. – laalto

+0

@CommonsWare 나는 같은 생각을 가지고있었습니다. 하지만 저는 항상'R.Color .... '를 직접 지정하고 있습니다. 괜찮을거야? 내가 "다른 장소"에서 그들을 할당하더라도? – MMike

답변

3

getColor는 실제 AARRGGBB 색상 값을 반환합니다. R.color.Black은 검은 색 일 수도 있고 그렇지 않을 수도있는 색상을 담고있는 id입니다. 하나는 실제 값이고, 하나는 색상에 대한 참조입니다.

+0

감사합니다. 그것은 나에게 분명했다! – MMike

관련 문제