[Android] getResources().getColor() 메소드 deprecated 되었는데 대체방법은?
getResources().getColor(int id)
메서드는 API 23(Android 6.0)부터 deprecated되었다. 대신, 색상을 가져올 때 ContextCompat.getColor(Context, int)
메서드를 사용하는 것이 권장한다.
대체 방법
getResources().getColor()
를 대체하는 코드는 다음과 같습니다:
Deprecated 코드:
int color = getResources().getColor(R.color.my_color); // Deprecated
대체 코드:
int color = ContextCompat.getColor(context, R.color.my_color);
예시
- Activity에서 사용:
int color = ContextCompat.getColor(this, R.color.my_color);
- Fragment에서 사용:
int color = ContextCompat.getColor(requireContext(), R.color.my_color);
- View에서 사용:
int color = ContextCompat.getColor(getContext(), R.color.my_color);
XML에서 색상 동적으로 변경 예시
배경색 변경:
View view = findViewById(R.id.my_view); view.setBackgroundColor(ContextCompat.getColor(this, R.color.my_color));
텍스트 색상 변경:
TextView textView = findViewById(R.id.my_text_view); textView.setTextColor(ContextCompat.getColor(this, R.color.my_color));
이 방법은 Android 23(API 레벨 23) 이상에서도 호환 가능하며, ContextCompat 클래스는 Jetpack의 일부로 지속적으로 업데이트되고 있다.