Android getResources().getDrawable() API obsolètes 22
Avec de nouvelles API android 22 getResources().getDrawable()
est maintenant obsolète.
Maintenant, la meilleure approche est d'utiliser uniquement getDrawable()
.
Ce qui a changé?
- Pourriez-vous préciser votre question? Il est juste que la méthode
getDrawable (int id)
de la classeResources
est obsolète. Vous devez maintenant utiliser la méthodegetDrawable (int id, Resources.Theme theme)
avec le nouveau thème de paramètre. - ContextCompat.getDrawable(contexte, R. de la couleur.color_name)
- Vous pouvez consulter mon blog sur ce sujet pour une explication plus approfondie au sujet de pourquoi les deux
Resources#getDrawable(int)
etResources#getColor(int)
ont été désapprouvées. - Google devrait mettre des solutions rapides pour chaque obsolète fonction. J'ai fait un post à ce sujet ici: code.google.com/p/android/issues/detail?id=219495
Vous devez vous connecter pour publier un commentaire.
Vous avez quelques options pour gérer ce dépréciation de la droite (et l'avenir de), selon le type de drawable vous êtes chargement:
A) un drawable avec thème attributs
Vous obtiendrez un style Dessiné comme une Activité de votre thème instruit.
C'est probablement ce dont vous avez besoin.
B) un drawable sans thème attributs
Vous aurez votre non stylé drawable à l'ancienne. Veuillez noter:
ResourcesCompat.getDrawable()
est pas obsolète!SUPPLÉMENTAIRE) un drawable avec thème attributs de un autre thème
Edit: voir mon blog sur le sujet pour une explication plus complète
Vous devez utiliser le code suivant à partir de la bibliothèque de prise en charge à la place:
À l'aide de cette méthode est l'équivalent de l'appel:
Comme de l'API 21, vous devez utiliser le
getDrawable(int, Theme)
méthode au lieu degetDrawable(int)
, car il vous permet d'extraire un objet dessiné associés à un ID de ressource pour la densité de l'écran ou d'un thème. L'appel de la dépréciégetDrawable(int)
méthode est équivalent à l'appel degetDrawable(int, null)
.getDrawable (int id)
méthode de laContext
classe. C'est le même quegetResources().getDrawable(id, getTheme());
et utilise la nouvelle API.getDrawable(int, Resources.Theme)
.Remplacer cette ligne :
getResources().getDrawable(R.drawable.your_drawable)
avec
ResourcesCompat.getDrawable(getResources(), R.drawable.your_drawable, null)
MODIFIER
ResourcesCompat
est également obsolète maintenant. Mais vous pouvez utiliser ceci:ContextCompat.getDrawable(this, R.drawable.your_drawable)
(Icithis
est le contexte)pour plus de détails, suivez ce lien: ContextCompat
ResourcesCompat
est obsolète. Il devrait fonctionner correctement.getResources().getDrawable()
était dépréciée de l'API de niveau 22. Maintenant, nous devons ajouter le thème:getDrawable (int id, Ressources.Thème de thème) (Ajout de l'API de niveau 21)
Ceci est un exemple:
Ceci est un exemple de la façon de valider les versions ultérieures:
Build.VERSION_CODES.LOLLIPOP is API 21
, et donc ne devrait-ce pas êtreif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1)
ouif (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP)
? Jamais l'esprit. De ci-dessous "La méthode a été ajouté dans l'API 21 mais il n'était pas obsolète jusqu'à ce que l'API 22. :)"Vous pouvez utiliser
du boulot pour moi
Juste un exemple de comment j'ai résolu le problème en un tableau de charger une listView, j'espère que ça aide.
Essayez ceci:
fr api de niveau 14
Construire.VERSION_CODES.LOLLIPOP devrait maintenant être changé à BuildVersionCodes.Sucette
j'.e:
BuildVersionCodes
une classe spécifique à Xamarin?Si vous ciblez les SDK > 21 (lollipop ou 5.0) utilisation
Voir les docs
Maintenant, vous avez besoin pour mettre en œuvre comme ce
Suivant une seule ligne de code suffit, tout sera à prendre en charge par ContextCompat.getDrawable