Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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

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

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

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