setBackgroundDrawable () déconseillé

Donc mon sdk va de 15 à 21 et quand j’appelle setBackgroundDrawable() , Android Studio me dit que c’est obsolète.

J’ai pensé à le contourner en utilisant:

 int sdk = android.os.Build.VERSION.SDK_INT; if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.img_wstat_tstorm)); } else { layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm)); } 

Mais ensuite, je reçois une erreur à “setBackground ()”.

Alors, comment vous en sortiriez-vous?

C’est un sujet intéressant. La façon dont vous le faites est apparemment correcte. C’est en fait juste un changement de décision de nommage. Comme cette réponse l’ indique, setBackground() appelle simplement setBackgroundDrawable() :

 public void setBackground(Drawable background) { //noinspection deprecation setBackgroundDrawable(background); } @Deprecated public void setBackgroundDrawable(Drawable background) { ... } 

Vous pouvez voir ce fil pour plus d’informations sur tout cela.

peut-être que vous pouvez essayer ce qui suit:

 setBackgroundResource(R.drawable.img_wstat_tstorm); 

C’est amusant parce que cette méthode est obsolète, mais si vous regardez le code source Android, vous trouverez ceci:

  /** * Set the background to a given Drawable, or remove the background. If the * background has padding, this View's padding is set to the background's * padding. However, when a background is removed, this View's padding isn't * touched. If setting the padding is desired, please use * {@link #setPadding(int, int, int, int)}. * * @param background The Drawable to use as the background, or null to remove the * background */ public void setBackground(Drawable background) { //noinspection deprecation setBackgroundDrawable(background); } 

Vous obtenez une erreur car getResources (). GetDrawable () prend un identifiant (int) non modifiable comme argument. Essaye ça:

layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));

Ceci est correct dans mon cas Résoudre ce problème

  imageView.setBackgroundResource(images[productItem.getPosition()]); 

À partir du 15 août 2018

Utilisez les bibliothèques de support

 Drawable drawable = ResourcesCompat.getDrawable(getResources(), drawableRes, null); ViewCompat.setBackground(layout, drawable); 

J’utilise un minSdkVersion 16 et targetSdkVersion 23 Ce qui suit fonctionne pour moi, il utilise ContextCompat.getDrawable (context, R.drawable.drawable);

Au lieu d’utiliser: layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));

Plutôt utiliser:

layout.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.img_wstat_tstorm));

getActivity() est utilisé dans un fragment, si l’appel d’une activité utilise this

 //Java view.setBackground(ActivityCompat.getDrawable(context, R.drawable.bg)) //Kotlin view.background = ActivityCompat.getDrawable(context, R.drawable.bg) 
 BitmapDrawable background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.mipmap.Nome_imgem)); getSupportActionBar().setBackgroundDrawable(background);