Con el nuevo Android API 22 getResources().getDrawable()
ahora está en desuso. Ahora el mejor enfoque es usar solo getDrawable()
.
¿Qué cambió?
Con el nuevo Android API 22 getResources().getDrawable()
ahora está en desuso. Ahora el mejor enfoque es usar solo getDrawable()
.
¿Qué cambió?
getDrawable (int id)
de la claseResources
está en desuso. Ahora debe usar el métodogetDrawable (int id, Resources.Theme theme)
con el nuevo parámetro de tema.Resources#getDrawable(int)
y enResources#getColor(int)
desuso.Respuestas:
Tiene algunas opciones para manejar este desuso de la manera correcta (y a prueba de futuro ), dependiendo del tipo de dibujo que esté cargando:
A) dibujables con atributos de tema
Obtendrá un Drawable con estilo según lo indique su tema de Actividad. Esto es probablemente lo que necesitas.
B) dibujables sin atributos de tema
Obtendrá su dibujable sin estilo a la antigua usanza. Tenga en cuenta: no
ResourcesCompat.getDrawable()
está en desuso!EXTRA) dibujables con atributos de tema de otro tema
fuente
Editar: vea mi publicación de blog sobre el tema para obtener una explicación más completa
En su lugar, debe usar el siguiente código de la biblioteca de soporte:
Usar este método es equivalente a llamar:
A partir de API 21, debe usar el
getDrawable(int, Theme)
método en lugar degetDrawable(int)
, ya que le permite obtener un objeto dibujable asociado con un ID de recurso particular para la densidad / tema de pantalla dada. Llamar algetDrawable(int)
método en desuso es equivalente a llamargetDrawable(int, null)
.fuente
getDrawable (int id)
método de laContext
clase. Esto es lo mismogetResources().getDrawable(id, getTheme());
y también usa la nueva API.getDrawable(int, Resources.Theme)
.Reemplace esta línea:
getResources().getDrawable(R.drawable.your_drawable)
con
ResourcesCompat.getDrawable(getResources(), R.drawable.your_drawable, null)
EDITAR
ResourcesCompat
También está en desuso ahora. Pero puedes usar esto:ContextCompat.getDrawable(this, R.drawable.your_drawable)
(Aquíthis
está el contexto)para más detalles siga este enlace: ContextCompat
fuente
ResourcesCompat
está en desuso. Debería funcionar bien.getResources().getDrawable()
quedó en desuso en el nivel 22 de API. Ahora debemos agregar el tema:getDrawable (int id, Resources.Theme theme) (Agregado en API nivel 21)
Esto es un ejemplo:
Este es un ejemplo de cómo validar para versiones posteriores:
fuente
Build.VERSION_CODES.LOLLIPOP is API 21
Entonces, ¿no debería ser estoif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1)
oif (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP)
? No importa. Desde abajo "El método se agregó en la API 21 pero no se desactivó hasta la API 22. :)"Puedes usar
eso es trabajo para mi
fuente
Solo un ejemplo de cómo solucioné el problema en una matriz para cargar una vista de lista, espero que ayude.
fuente
Prueba esto:
fuente
Si está apuntando a SDK> 21 (lollipop o 5.0) use
Ver documentos
fuente
getDrawable (int drawable) está en desuso en el nivel 22 de API. Para referencia, consulte este enlace .
Ahora para resolver este problema, tenemos que pasar un nuevo constructor junto con una identificación como la siguiente:
Para soluciones Haga esto: -
En Java: -
o
En Kotlin: -
o
Espero que esto te ayude. Gracias.
fuente
en api nivel 14
fuente
Ahora necesitas implementar así
Seguir una sola línea de código es suficiente, ContextCompat.getDrawable se encargará de todo.
fuente
Para algunos que todavía tienen que resolver este problema incluso después de aplicar la sugerencia de este hilo (solía ser uno como ese), agregue esta línea en su clase de Aplicación, método onCreate ()
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
Como se sugiere aquí y aquí, a veces esto es necesario para acceder a los vectores de los recursos, especialmente cuando se trata de elementos de menú, etc.
fuente
En Kotlin puedes usar extensión
luego usar como
fuente
Build.VERSION_CODES.LOLLIPOP ahora debería cambiarse a BuildVersionCodes.Lollipop, es decir:
fuente
BuildVersionCodes
una clase específica de Xamarin?