android deprecated deprecation-warning

android - setBackgroundDrawable() obsoleto



deprecated deprecation-warning (9)

Así que mi sdk va de 15 a 21 y cuando llamo a setBackgroundDrawable() , Android Studio me dice que está en desuso.

Pensé en rodearlo usando:

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)); }

Pero luego, aparece un error en "setBackground ()".

Entonces, ¿cómo lidiarías con eso?


Correcto a partir del 15 de agosto de 2018

Use las bibliotecas de soporte

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


Es curioso porque ese método está en desuso, pero si miras el código fuente de Android, encontrarás esto:

/** * 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); }


Es un tema interesante La forma en que lo estás haciendo es correcta, al parecer. En realidad, es solo un cambio de decisión de nombramiento. Como esta respuesta señala, setBackground() simplemente llama a setBackgroundDrawable() :

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

Puede ver este hilo para obtener más información sobre todo esto.


Esto es correcto en mi caso Resuelve este problema

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


Estoy usando un minSdkVersion 16 y targetSdkVersion 23 Lo siguiente me funciona, usa ContextCompat.getDrawable (context, R.drawable.drawable);

En lugar de usar: layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));

Más bien uso:

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

getActivity() se usa en un fragmento, si llama desde una actividad usa this


Obtiene un error porque getResources (). GetDrawable () toma un id (int) no un drawable como su argumento. Prueba esto:

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


Tal vez puedas probar lo siguiente:

setBackgroundResource(R.drawable.img_wstat_tstorm);


//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);