Решенный цвет вместо идентификатора ресурса

Недавно я видел, что в моем коде появилась ошибка lint:

Должен передать разрешенный цвет вместо идентификатора ресурса здесь: getResources (). GetColor (R.color.maps_list_background_color)
MyClass.java / myapp / android / maps line 107 Проблема с линзой Android

Я знаю, как решить его, ответ в ошибке, дело в том, что я не понимаю, почему они добавили эту ошибку в linter.

Solutions Collecting From Web of "Решенный цвет вместо идентификатора ресурса"

Методам, принимающим цвет в виде целого числа, следует передать тройку RGB, а не фактический идентификатор цветового ресурса. Вы должны вызвать getResources.getColor (ресурс).

Функция, которую вы вызываете, ожидает целое число, которое является тройной RGB, а не только идентификатором цветного ресурса. Идентификатор ресурса цвета по-прежнему является целым числом, но не даст цвет, который вы ожидаете, если он используется как тройной RGB. Чтобы передать правильную тройку RGB для вашего цвета, вы должны решить ее с помощью getResources().getColor(R.color.example_color) .

Поскольку я все еще нахожу это в Google, и он устарел, я подумал, что я мог бы также поделиться текущим методом этого.

Проверьте getResources (). GetColor () устарел

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

Используйте аннотацию @ColorInt чтобы подтвердить, что это цвет, а не идентификатор цвета.

Смотрите: android.support.annotation.ColorInt

Что касается меня, это очень глупое предупреждение.

У меня есть собственный класс с функцией:

 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 или любое другое 🙂

Поскольку getResources().getColor() устарел, вам нужно сделать это, чтобы получить цвет:

 int color = ContextCompat.getColor(getContext(),your_color_id); 

Теперь у вас есть цвет по отношению к текущему контексту. Установите цвет, используя:

 your_view.setBackgroundColor(color); 

По-видимому, это вызвано линией; Третья пуля.

Новые правила линта

Возможно, вы могли бы это скрыть или попытаться реализовать свой синтаксис.