Android: Alternative pour context.getDrawable ()

J’ai utilisé context.getDrawable() comme ceci dans mon projet:

 Drawable greenProgressbar = context.getDrawable(R.drawable.custom_progressbargreen); 

Mais Eclipse me signale qu’il a besoin d’un Minimum API level of 21 . Cela signifierait qu’après une recherche rapide sur Google, mon application ne sera utilisable que sur Android 5.0 . Puisque tous les appareils n’utilisent pas cette version d’Android, j’aimerais avoir une alternative pour context.getDrawable() .

Selon la documentation du SDK 22, la méthode précédemment acceptée est obsolète:

Avant android.os.Build.VERSION_CODES # JELLY_BEAN, cette fonction ne récupérait pas correctement la densité de configuration finale lorsque l’ID de ressource transmis ici est un alias d’une autre ressource Drawable. Cela signifie que si la configuration de densité de la ressource d’alias est différente de la ressource réelle, la densité du Drawable renvoyé serait incorrecte, entraînant une mauvaise mise à l’échelle.

Comme indiqué dans cette réponse, une meilleure solution serait d’utiliser ContextCompat : ContextCompat.getDrawable(context, R.drawable.***)

Essayez d’append un getResources() après le contexte, donc ceci:

 Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen); 

devrait marcher.

J’ai eu un problème similaire avant. Avez-vous essayé de le faire comme ça?

 Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen); 

J’ai eu la même situation que je voulais référencer la méthode getDrawable () qui est maintenant obsolète.

ce que j’ai utilisé,

 myButton.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_btn_off)); 

J’espère que ceci vous aidera

Essaye ça:

 AppCompatResources.getDrawable(context, R.drawable.*)