¿Cómo obtener una identificación de recurso con un nombre de recurso conocido?
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?
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)
Será algo como:
R.drawable.resourcename
Asegúrese de no importar el Android.R
espacio de nombres, ya que puede confundir a Eclipse (si eso es lo que está usando).
Si eso no funciona, siempre puedes usar el getResources
método de un contexto...
Drawable resImg = this.context.getResources().getDrawable(R.drawable.resource);
Donde this.context
se inicializa como una Activity
o Service
cualquier otra Context
subclase.
Actualizar:
Si es el nombre que desea, la Resources
clase (devuelta por getResources()
) tiene un getResourceName(int)
método y un getResourceTypeName(int)
?
Actualización 2 :
La Resources
clase 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.