¿Cómo acceder a recurso con nombre dinámico en mi caso?
Si obtengo el nombre de la imagen como una variable como la siguiente:
var imageName = SERVICE.getImg();
Entonces, ¿cómo puedo obtener el recurso con R.drawable.????
, Intenté R.drawable[imageName]
, pero falló. ¿Alguna sugerencia?
- Creación de widgets de Android con el teléfono
- Depuración del código de widgets de Android en Eclipse
- Prueba de Android si el elemento de interfaz de usuario / vista existe
- Cómo cambiar el color del divisor predeterminado para todos los ListViews
- Cómo personalizar el ancho y la altura cuando se muestra una actividad como un cuadro de diálogo
- Widget de Android que no aparece en la lista después del desarrollo
- Cómo configurar mi teclado personal como entrada estándar en mi aplicación
- ¿Cómo podemos cambiar la imagen de un botón de widget?
- Cómo cancelar Android ListView elemento de ser activado / resaltado en ListView setOnItemClickListener?
- Error XML en Eclipse mientras se visualiza el diseño gráfico de Xml
- Cómo determinar el tipo MIME de archivo en android?
- Cómo obtener texto seleccionado de edittext en android?
- Ventana emergente en cualquier aplicación
int id = getResources().getIdentifier(imageName, type, package);
Esto le proporcionará el ID del recurso que está buscando. Con él, puede acceder al recurso desde la clase R.
Usando sólo el parámetro name
:
También puede incluir todas las 3 informaciones en el parámetro "name" utilizando el siguiente formato: "package:type/image_name"
, algo así como:
int id = getResources().getIdentifier("com.my.app:drawable/my_image", null, null);
Esto es útil cuando se trabaja con componentes externos o bibliotecas que no se pueden o no quieren cambiar cómo se llama a getIdentifier()
. Por ejemplo: AOSP Launcher3
Prueba esto:
int id = getResources().getIdentifier(imageName, "drawable", getPackageName());
Necesitas reflexionar.
Supongamos que tiene R.drawable.image1, si desea acceder a ella a través del nombre de cadena "image1", debería funcionar:
String Name = "image1"; int id = R.drawable.class.getField(Name).getInt(null);
Pero note que sólo obtener el Id de la imagen, todavía necesita el inflador para obtener el actual estirable de ella.
Utilice esta función
public static String getResourceString(String name, Context context) { int nameResourceID = context.getResources().getIdentifier(name, "string", context.getApplicationInfo().packageName); if (nameResourceID == 0) { throw new IllegalArgumentException( "No resource string found with name " + name); } else { return context.getString(nameResourceID); } }
Puede utilizar el método getIdentifier que le dará la identificación del recurso por su nombre. Compruebe este hilo para obtener más detalles.
- USB_DEVICE_ATTACHED Intento de no disparar
- Cómo abrir la configuración de Android Phone en un clic de botón en nuestra aplicación para Android