¿Cómo obtener una identificación de recurso con un nombre de recurso conocido?

Resuelto Aswan asked hace 54 años • 10 respuestas

Quiero acceder a un recurso como String o Drawable por su nombre y no por su ID int.

¿Qué método usaría para esto?

Aswan avatar Jan 01 '70 08:01 Aswan
Aceptado

Si entendí bien, esto es lo que quieres.

int drawableResourceId = this.getResources().getIdentifier("nameOfDrawable", "drawable", this.getPackageName());

Donde "esto" es una Actividad, escrita sólo para aclarar.

En caso de que desee una cadena en strings.xml o un identificador de un elemento de la interfaz de usuario, sustituya "dibujable"

int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());

Te advierto que esta forma de obtener identificadores es realmente lenta, úsala sólo donde sea necesario.

Enlace a la documentación oficial: Resources.getIdentifier(String name, String defType, String defPackage)

Maragues avatar Aug 13 '2010 11:08 Maragues

Será algo como:

R.drawable.resourcename

Asegúrese de no importar el Android.Respacio de nombres, ya que puede confundir a Eclipse (si eso es lo que está usando).

Si eso no funciona, siempre puedes usar el getResourcesmétodo de un contexto...

Drawable resImg = this.context.getResources().getDrawable(R.drawable.resource);

Donde this.contextse inicializa como una Activityo Servicecualquier otra Contextsubclase.

Actualizar:

Si es el nombre que desea, la Resourcesclase (devuelta por getResources()) tiene un getResourceName(int)método y un getResourceTypeName(int)?

Actualización 2 :

La Resourcesclase tiene este método:

public int getIdentifier (String name, String defType, String defPackage) 

Que devuelve el número entero del nombre, tipo y paquete del recurso especificado.

Rabid avatar Aug 13 '2010 11:08 Rabid