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.resourcenameAsegúrese de no
Android.Rimportar 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
getResourcesmétodo de contexto ...Donde
this.contextse inicializa como unaActivity,Serviceo cualquier otraContextsubclase.Actualizar:
Si es el nombre que desea, la
Resourcesclase (devuelta porgetResources()) tiene ungetResourceName(int)método y ungetResourceTypeName(int)?Actualización 2 :
La
Resourcesclase tiene este método:Que devuelve el entero del nombre de recurso, tipo y paquete especificados.
fuente
R.drawable.resourcenamees 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 VersionvíaExtension FunctionPara encontrar una identificación de recurso por su nombre En Kotlin, agregue el fragmento a continuación en un archivo kotlin:
ExtensionFunctions.kt
•
UsageAhora se puede acceder a todos los identificadores de recursos siempre que tenga una referencia de contexto utilizando el
resIdByNamemé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