source

getResources().getColor()가 더 이상 사용되지 않습니다.

lovecheck 2023. 6. 11. 10:59
반응형

getResources().getColor()가 더 이상 사용되지 않습니다.

사용:buildToolsVersion "22.0.1",targetSdkVersion 22나의 gradle 파일에.

나는 유용한 것을 발견했습니다.getResources().getColor(R.color.color_name)사용되지 않습니다.

대신 무엇을 사용해야 합니까?

가장 좋은 방법은 다음과 같습니다.

ContextCompat.getColor(context, R.color.color_name)

예:

yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
                            R.color.colorAccent))

이렇게 하면 Mashmallow 두 매개 변수 방법 또는 Marshmallow 이전 방법을 적절하게 선택할 수 있습니다.

음, 그것은 안드로이드 M에서 더 이상 사용되지 않기 때문에 안드로이드 M 이하에 대해서는 예외를 만들어야 합니다.현재 테마를 추가합니다.getColor기능.다음을 통해 현재 테마를 얻을 수 있습니다.getTheme().

이렇게 하면 단편적으로 속임수를 쓸 수 있습니다. 대체할 수 있습니다.getActivity()와 함께getBaseContext(),yourContext현재 컨텍스트를 유지하는 등

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white, getActivity().getTheme()));
}else {
    yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white));
}

*p.s : M에서는 색상이 사용되지 않지만 L에서는 그리기 가능한 색상이 사용되지 않습니다.

Support V4 라이브러리의 일부인 ContextCompat.getColor()를 사용해야 합니다(그러면 이전의 모든 API에서 작동합니다).

ContextCompat.getColor(context, R.color.my_color)

문서 "M부터 시작하여 반환된 색상은 지정된 컨텍스트의 테마에 맞게 스타일이 지정됩니다."에서 지정한 대로, 걱정할 필요가 없습니다.

앱 build.gradle 내의 종속성 배열에 다음을 추가하여 지원 V4 라이브러리를 추가할 수 있습니다.

compile 'com.android.support:support-v4:23.0.1'

유용한 getResources().getColor(R.color.color_name)가 더 이상 사용되지 않습니다.

설명서에 따르면 API Level 21에서는 사용되지 않습니다.

M 개발자 미리보기에서는 더 이상 사용되지 않습니다.그러나 대체 방법(2-모수)getColor()색상 리소스 ID와 a를 가져갑니다.Resources.Theme개체)는 M 개발자 미리 보기에서만 사용할 수 있습니다.

따라서 현재 단일 매개 변수를 계속 사용합니다.getColor()방법.올해 말에, 2-매개변수를 사용하는 것을 고려해 보십시오.getColor()Android M 장치의 메서드, 사용되지 않는 단일 매개 변수로 되돌아갑니다.getColor()이전 장치의 메서드입니다.

언급URL : https://stackoverflow.com/questions/31842983/getresources-getcolor-is-deprecated

반응형