Решенный цвет вместо идентификатора ресурса
Недавно я увидел, что в моем коде появилась ошибка lint:
Должен передать разрешенный цвет вместо идентификатора ресурса здесь: GetResources(). GetColor (R.color.maps_list_background_color)
MyClass.java/myapp/android/maps line 107 Проблема с линзой Android
Я знаю, как разрешить его ответ в ошибке, дело в том, что я не понимаю, почему они добавили эту ошибку в linter.
Ответы
Ответ 1
Методам, принимающим цвет в виде целого числа, следует передать тройку RGB, а не фактический идентификатор цветового ресурса. Вы должны вызвать getResources.getColor(ресурс).
Функция, которую вы вызываете, ожидает целое число, которое является тройной RGB, а не только идентификатором цветового ресурса. Идентификатор ресурса цвета по-прежнему является целым числом, но не приведет к цвету, который вы ожидаете, если он использовался в качестве тройки RGB. Чтобы передать правильную тройку RGB для вашего цвета, вы должны решить ее с помощью вызова getResources().getColor(R.color.example_color)
.
Ответ 2
Поскольку я все еще нахожу это в Google, и он устарел, я подумал, что мог бы также поделиться текущим методом этого.
проверить getResources(). getColor() устарел
ContextCompat.getColor(context, R.color.color_name)
Ответ 3
Используйте аннотацию @ColorInt
, чтобы подтвердить, что это цвет, а не идентификатор цвета.
Смотрите: android.support.annotation.ColorInt
Ответ 4
Что касается меня, это очень глупое предупреждение.
У меня есть собственный класс с функцией:
public static final void setBackgroundColor(View v, int id) {
// Here I get color by id from resources and setBackgroundColor of this color.
}
В любом случае, если я попробую позвонить setBackgroundColor
, я получаю предупреждение. Но почему?
Итак, я сделал просто: переименуйте setBackgroundColor
в setBackgroundColorr
.
Это предупреждение активирует, если найдено имя color
при имени функции.
И да, мне не нравится имя setColorBackground или любое другое: -)
Ответ 5
Так как getResources().getColor()
устарел, вам нужно сделать это, чтобы получить цвет:
int color = ContextCompat.getColor(getContext(),your_color_id);
Теперь у вас есть цвет по отношению к текущему контексту
Установите цвет, используя:
your_view.setBackgroundColor(color);
Ответ 6
По-видимому, это вызвано линией; третья пуля.
Новые правила линта
Возможно, вы могли бы это скрыть или попытаться реализовать свой синтаксис.