getResources().getColor() устарела
С помощью: buildToolsVersion "22.0.1"
, targetSdkVersion 22
в моем файле Gradle.
Я обнаружил, что полезный getResources().getColor(R.color.color_name)
устарела.
Что я должен использовать вместо этого?
4 ответа
Похоже, что лучший подход заключается в использовании:
ContextCompat.getColor(context, R.color.color_name)
Это выберет двухпараметрический метод "Зефир" или метод перед "Зефир" соответственно.
Ну, это устарело в Android M, поэтому вы должны сделать исключение для Android 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));
}
*ps: цвет устарел в M, но цвет рисования устарел в L
Вам необходимо использовать ContextCompat.getColor(), который является частью библиотеки Support V4 (поэтому она будет работать для всех предыдущих API).
ContextCompat.getColor(context, R.color.my_color)
Как указано в документации, "Начиная с M, возвращаемый цвет будет стилизован для указанной темы контекста". Так что не нужно беспокоиться об этом.
Вы можете добавить библиотеку Support V4, добавив следующее в массив зависимостей внутри вашего приложения build.gradle:
compile 'com.android.support:support-v4:23.0.1'
Я обнаружил, что полезный getResources(). GetColor(R.color.color_name) устарел.
В соответствии с документацией это не рекомендуется в API Level 21.
Это устарело в M Developer Preview. Однако метод замены (двухпараметрический getColor()
который берет идентификатор ресурса цвета и Resources.Theme
объект) доступен только в M Developer Preview.
Следовательно, прямо сейчас, продолжайте использовать однопараметрический getColor()
метод. Позже в этом году рассмотрите возможность использования двухпараметрического getColor()
метод на устройствах Android M, возвращаясь к устаревшему однопараметрическому getColor()
метод на старых устройствах.