Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android getResources (). GetDrawable () API obsoleto 22

Con el nuevo androide API 22 getResources().getDrawable() ahora está obsoleto. Ahora el mejor enfoque es usar sólo getDrawable() .

¿Qué cambio?

8 Solutions collect form web for “Android getResources (). GetDrawable () API obsoleto 22”

Usted tiene algunas opciones para manejar esta depreciación de la manera correcta (y la prueba futura ), dependiendo de qué tipo de dibujable que se está cargando:


A) dibujables con atributos temáticos

 ContextCompat.getDrawable(getActivity(), R.drawable.name); 

Obtendrás un estilo dibujable como tu tema de actividad te instruye. Esto es probablemente lo que usted necesita.


B) dibujables sin atributos temáticos

 ResourcesCompat.getDrawable(getResources(), R.drawable.name, null); 

Usted conseguirá su unstyled drawable la vieja manera. Tenga en cuenta: ResourcesCompat.getDrawable() no está obsoleto!


EXTRA) dibujables con atributos temáticos de otro tema

 ResourcesCompat.getDrawable(getResources(), R.drawable.name, anotherTheme); 

Editar: vea mi post de blog sobre el tema para una explicación más completa


Debe utilizar el siguiente código de la biblioteca de soporte:

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

El uso de este método equivale a llamar a:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return resources.getDrawable(id, context.getTheme()); } else { return resources.getDrawable(id); } 

A partir de la API 21, debe utilizar el getDrawable(int, Theme) lugar de getDrawable(int) , ya que le permite buscar un objeto dibujable asociado con un ID de recurso particular para la densidad / tema de pantalla dado. Llamar al getDrawable(int) obsoleto getDrawable(int) equivale a llamar a getDrawable(int, null) .

Reemplazar esta línea: getResources().getDrawable(R.drawable.your_drawable)

Con ResourcesCompat.getDrawable(getResources(), R.drawable.your_drawable, null)

EDITAR

ResourcesCompat también está obsoleto ahora. Pero puedes usar esto:

ContextCompat.getDrawable(this, R.drawable.your_drawable) (Aquí this es el contexto)

Para más detalles, siga este enlace: ContextCompat

getResources().getDrawable() ha quedado obsoleto en el nivel de API 22. Ahora debemos añadir el tema:

GetDrawable (id int, tema Resources.Theme) (Añadido en el nivel 21 de la API)

Esto es un ejemplo:

 myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage, getApplicationContext().getTheme())); 

Este es un ejemplo de cómo validar para versiones posteriores:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //>= API 21 myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage, getApplicationContext().getTheme())); } else { myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage)); } 

Puedes usar

 ContextCompat.getDrawable(getApplicationContext(),R.drawable.example); 

Eso es trabajo para mi

Sólo un ejemplo de cómo arreglé el problema en una matriz para cargar un listView, espero que ayude.

  mItems = new ArrayList<ListViewItem>(); // Resources resources = getResources(); // mItems.add(new ListViewItem(resources.getDrawable(R.drawable.az_lgo), getString(R.string.st_az), getString(R.string.all_nums))); // mItems.add(new ListViewItem(resources.getDrawable(R.drawable.ca_lgo), getString(R.string.st_ca), getString(R.string.all_nums))); // mItems.add(new ListViewItem(resources.getDrawable(R.drawable.co_lgo), getString(R.string.st_co), getString(R.string.all_nums))); mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.az_lgo, null), getString(R.string.st_az), getString(R.string.all_nums))); mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.ca_lgo, null), getString(R.string.st_ca), getString(R.string.all_nums))); mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.co_lgo, null), getString(R.string.st_co), getString(R.string.all_nums))); 

Prueba esto:

 public static List<ProductActivity> getCatalog(Resources res){ if(catalog == null) { catalog.add(new Product("Dead or Alive", res .getDrawable(R.drawable.product_salmon), "Dead or Alive by Tom Clancy with Grant Blackwood", 29.99)); catalog.add(new Product("Switch", res .getDrawable(R.drawable.switchbook), "Switch by Chip Heath and Dan Heath", 24.99)); catalog.add(new Product("Watchmen", res .getDrawable(R.drawable.watchmen), "Watchmen by Alan Moore and Dave Gibbons", 14.99)); } } 

Build.VERSION_CODES.LOLLIPOP ahora debe cambiarse a BuildVersionCodes.Lollipop es decir:

  if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder, Context.Theme); } else { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.