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() метод на старых устройствах.

Другие вопросы по тегам