Récemment, j'ai vu apparaître une erreur de peluche dans mon code:
Devrait passer la couleur résolue au lieu de l'ID de ressource ici: getResources (). GetColor (R.color.maps_list_background_color)
MyClass.Java/myapp/Android/maps ligne 107 Android Problème de peluches
Je sais comment le résoudre, la réponse est dans l'erreur, le problème est que je ne comprends pas pourquoi ils ont ajouté cette erreur dans le linter.
Les méthodes qui prennent une couleur sous la forme d'un entier doivent recevoir un triple RVB, et non l'ID de ressource de couleur réelle. Vous devez appeler getResources.getColor (ressource).
La fonction que vous appelez attend un entier qui est un triple RVB, pas seulement l'id d'une ressource couleur. L'ID de ressource de couleur est toujours un entier, mais ne produirait pas la couleur que vous attendez s'il était utilisé comme triple RVB. Afin de lui passer le triple RVB correct pour votre couleur, vous devez le résoudre avec l'appel getResources().getColor(R.color.example_color)
.
Étant donné que je trouve toujours cela sur Google et qu'il est obsolète, je pensais que je pourrais aussi bien partager la méthode actuelle de le faire.
check getResources (). getColor () est déconseillé
ContextCompat.getColor(context, R.color.color_name)
Utiliser l'annotation @ColorInt
pour confirmer qu'il s'agit d'une couleur et non d'un identifiant de référence de couleur.
Puisque getResources().getColor()
est obsolète, vous devez le faire pour obtenir la couleur:
int color = ContextCompat.getColor(getContext(),your_color_id);
Vous avez maintenant la couleur par rapport au contexte actuel Définissez la couleur en utilisant:
your_view.setBackgroundColor(color);
Quant à moi, c'est un avertissement très stupide.
J'ai ma propre classe avec fonction:
public static final void setBackgroundColor(View v, int id) {
// Here I get color by id from resources and setBackgroundColor of this color.
}
Quoi qu'il en soit, si j'essaie d'appeler setBackgroundColor
, je reçois un avertissement. Mais pourquoi?
J'ai donc fait simple: renommer setBackgroundColor
en setBackgroundColorr
.
Cet avertissement s'active si le nom trouvé color
au nom de la fonction.
Et oui, je n'aime pas le nom setColorBackground ou tout autre :-)