uso studio que nonnull metodos intdef annotation android lint

android - studio - Color resuelto en lugar de una identificación de recursos



que es android studio (6)

Recientemente, he visto un error de pelusa en mi código:

Debería pasar el color resuelto en lugar del ID del recurso aquí: getResources (). GetColor (R.color.maps_list_background_color)
MyClass.java / myapp / android / maps línea 107 Android Lint Problem

Sé cómo resolverlo, la respuesta está en el error, el problema es que no entiendo por qué han agregado este error en el linter.


Los métodos que toman un color en forma de un entero deben pasar un triple RGB, no el ID de recurso de color real. Debe llamar a getResources.getColor (recurso).

La función que está llamando espera un entero que sea un triple RGB, no solo el ID de un recurso de color. El ID de recurso de color sigue siendo un número entero, pero no produciría el color que está esperando si se usó como el triple RGB. Para pasarle el triple RGB correcto para su color, debe resolverlo con la getResources().getColor(R.color.example_color) .


Aparentemente esto es causado por pelusa; tercera bala hacia abajo.

Nuevas reglas de pelusa

Probablemente podría suprimir esto o intentar implementar su sintaxis.


Como getResources().getColor() está en desuso, debe hacer esto para obtener el color:

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

Ahora tiene el color con respecto al contexto actual. Establezca el color usando:

your_view.setBackgroundColor(color);


Como todavía estoy encontrando esto en Google y está en desuso, pensé que podría compartir el método actual de hacerlo.

compruebe getResources (). getColor () está en desuso

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


En cuanto a mí, es una advertencia muy estúpida.

Tengo mi propia clase con la función:

public static final void setBackgroundColor(View v, int id) { // Here I get color by id from resources and setBackgroundColor of this color. }

De todos modos, si intento llamar a setBackgroundColor , recibo una advertencia. ¿Pero por qué?

Entonces, lo hice simple: cambie el nombre de setBackgroundColor a setBackgroundColorr .

Esta advertencia se activa si se encuentra el color nombre en el nombre de la función.

Y sí, no me gusta el nombre setColorBackground o cualquier otro :-)