La Resources.getColor(int id)
méthode est obsolète.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Que devrais-je faire?
La Resources.getColor(int id)
méthode est obsolète.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Que devrais-je faire?
Réponses:
À partir de la bibliothèque de support Android 23,
une nouvelle méthode getColor () a été ajoutée à
ContextCompat
.Sa description du JavaDoc officiel:
Alors, appelez simplement :
Vous pouvez vérifier le
ContextCompat.getColor()
code source sur GitHub .la source
tl; dr:
Explication:
Vous devrez utiliser ContextCompat.getColor () , qui fait partie de la bibliothèque Support V4 (cela fonctionnera pour toutes les API précédentes).
Si vous n'utilisez pas déjà la bibliothèque de support, vous devrez ajouter la ligne suivante au
dependencies
tableau dans votre applicationbuild.gradle
(remarque: elle est facultative si vous utilisez déjà la bibliothèque appcompat (V7) ):Si vous vous souciez des thèmes, la documentation précise que:
la source
M
, la couleur retournée sera stylisée pour le thème du contexte spécifié. "ContextCompat
classe provient de SupportV4. AppcompatV7 fonctionne également car il repose sur SupportV4. Comme on dit sur la documentation de la bibliothèque de soutien ,This library depends on the v4 Support Library. If you are using Ant or Eclipse, make sure you include the v4 Support Library as part of this library's classpath.
. Il est donc logique de ne pas mettreAppcompatV7
la réponse.Je ne veux pas inclure la bibliothèque de support uniquement pour getColor , donc j'utilise quelque chose comme
Je suppose que le code devrait fonctionner très bien et que le code obsolète
getColor
ne peut pas disparaître de l'API <23.Et voici ce que j'utilise dans Kotlin:
la source
Dans Android Marshmallow, de nombreuses méthodes sont obsolètes.
Par exemple, pour utiliser la couleur
Aussi pour obtenir une utilisation tirable
la source
Pour tous les utilisateurs de Kotlin:
la source
val color = ContextCompat.getColor(context, R.color.colorPrimary)
. La variable "it" peut être n'importe quoi, mais elle doit être un contexte .it
est dans ce cas lecontext
, puisque j'utilisecontext?.let {
pour vérifier si lecontext
n'est pas nul. La fonctiongetColor()
accepte uniquement un contexte non nul. En savoir plus icilet
et comment l'utiliser: kotlinlang.org/docs/reference/scope-functions.html#letDans votre RecyclerView à Kotlin
la source
Utilisez la
getColor(Resources, int, Theme)
méthode de la àResourcesCompat
partir de la bibliothèque de support Android.Je pense que cela reflète mieux votre question que celle
getColor(Context, int)
de laContextCompat
depuis que vous demandezResources
. Avant le niveau 23 de l'API, le thème ne sera pas appliqué et la méthode appellegetColor(int)
mais vous n'aurez pas l'avertissement obsolète. Le thème peut également êtrenull
.la source
Si vous n'avez pas nécessairement besoin des ressources, utilisez
parseColor(String)
:Color.parseColor("#cc0066")
la source
Si votre min. Le niveau d'API est 23, vous pouvez simplement utiliser
getColor()
comme nous utilisons pour obtenir des ressources de chaîne engetString()
:Vous pouvez contraindre pour les niveaux d'API inférieurs à 23:
mais pour rester simple, vous pouvez faire comme ci-dessous la réponse acceptée:
Des ressources .
Depuis ContextCompat AndroidX .
Du support ContextCompat
la source
Je suis frustré aussi. Mon besoin était très simple. Tout ce que je voulais, c'était la couleur ARGB des ressources, j'ai donc écrit une méthode statique simple.
la source