2012-02-28 12 views
18

Tengo algunas imágenes en mi proyecto. El nombre de la imagen se almacena en una Cadena y me gustaría establecer ImageResource (R.drawable. "....."); con la cadena del nombre de la imagen, pero el problema es que esto no está funcionando.Cómo reemplazar R.drawable. "SomeString"

¿Cómo puedo hacer esto?

+0

¿dónde están las imágenes? – Deva

+0

en el dibujo de mi proyecto. –

+0

No es una forma de trabajar en Android, tienes que almacenar imágenes en dibujables y acceder a ella por R.drawable.image – Newts

Respuesta

42

esto no es una sintaxis correcta, y debe obtener el error de tiempo del compilador, antes de alterar el recurso de imagen debe saber que todos los recursos proporcionan una identificación, estos identificadores se almacenan en el archivo R.java. Ids se almacenan en formato entero, y en su aplicación se puede recuperar todos estos recursos por parte de éstos de identificación, no por su nombre, por lo que necesita para traer Identificación de recursos en un primer momento, por:

String mDrawableName = "myimg"; 
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 

y luego utilizar este resNum .

+0

Genial, gracias. –

10

Uso

getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName()) 
+0

Genial, gracias. –

2

Ver este thread. Debería ayudarte. Básicamente, debe obtener el identificador y luego cargar utilizando setImageResource.

+0

Desconocido, ¿qué mal hice con mi respuesta? –

+0

Genial, gracias. –

+0

Ya le he dado un voto positivo. –

1

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

nombre - nombre de la imagen
DefType - será estirable para su caso
defPackage - paquete por defecto de la aplicación (creo que se puede utilizar getPackage() sobre la actividad de este)

0

intento este

String uri = "NAME"; 

    // int imageResource = R.drawable.icon; 
    int imageResource = getResources().getIdentifier(uri, null, getPackageName()); 

    ImageView imageView = (ImageView) findViewById(R.id.myImageView); 
    Drawable image = getResources().getDrawable(imageResource); 
    imageView.setImageDrawable(image); 
0

lo tengo trabajo moviendo la imagen de 'estirable' a la carpeta 'prima' y acceder al valor de la cadena de la siguiente manera. Si no tiene la carpeta 'raw' en el directorio 'res', haga clic con el botón secundario en res-> new-> directorio de recursos de Android y en el menú desplegable de resourcetype, seleccione 'raw'.

String avatar = ("android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue)); 
Cuestiones relacionadas