Quiero acceder a un recurso como una Cadena o un Drawable por su nombre y no por su id int.
¿Qué método usaría para esto?
java
android
android-resources
Asuán
fuente
fuente
Respuestas:
Será algo como:
R.drawable.resourcename
Asegúrese de no
Android.R
importar el espacio de nombres, ya que puede confundir a Eclipse (si eso es lo que está usando).Si eso no funciona, siempre puedes usar un
getResources
método de contexto ...Donde
this.context
se inicializa como unaActivity
,Service
o cualquier otraContext
subclase.Actualizar:
Si es el nombre que desea, la
Resources
clase (devuelta porgetResources()
) tiene ungetResourceName(int)
método y ungetResourceTypeName(int)
?Actualización 2 :
La
Resources
clase tiene este método:Que devuelve el entero del nombre de recurso, tipo y paquete especificados.
fuente
R.drawable.resourcename
es el enteroSi entendí bien, esto es lo que quieres
Donde "esto" es una Actividad, escrita solo para aclarar.
En caso de que desee una Cadena en strings.xml o un identificador de un elemento de la IU, sustituya "dibujable"
Te advierto que esta forma de obtener identificadores es realmente lenta, úsala solo donde sea necesario.
Enlace a la documentación oficial: Resources.getIdentifier (String name, String defType, String defPackage)
fuente
fuente
•
Kotlin Version
víaExtension Function
Para encontrar una identificación de recurso por su nombre En Kotlin, agregue el fragmento a continuación en un archivo kotlin:
ExtensionFunctions.kt
•
Usage
Ahora se puede acceder a todos los identificadores de recursos siempre que tenga una referencia de contexto utilizando el
resIdByName
método:fuente
Una forma sencilla de obtener la identificación de recursos de una cadena. Aquí resourceName es el nombre del recurso ImageView en la carpeta dibujable que también se incluye en el archivo XML.
fuente
Te sugiero que uses mi método para obtener un ID de recurso. Es mucho más eficiente que usar el método getIdentidier (), que es lento.
Aquí está el código:
fuente
fuente
He encontrado esta clase muy útil para manejar con recursos. Tiene algunos métodos definidos para tratar con dimens, colores, dibujos y cadenas, como este:
fuente
Además de la solución @lonkly
método:
fuente
En Kotlin lo siguiente funciona bien para mí:
Si el recurso se coloca en la carpeta mipmap, puede usar el parámetro "mipmap" en lugar de "dibujable".
fuente