2011-09-25 24 views
16

Quiero usar una variable en lugar de R.drawable.myimage porque tengo una base de datos con los nombres de las imágenes. Obtengo el nombre de la base de datos y deseo usar el recurso dibujable con este nombre.Recurso extraíble utilizando una variable

String flagimage = "R.drawable." + myHelper.getFlagImage(5); 
int resourceId = Integer.parseInt(flagimage); 
Bitmap flag = BitmapFactory.decodeResource(getResources(), resourceId); 

Respuesta

36

Usted puede utilizar el nombre de un recurso como

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

getResources().getIdentifier("us","drawable","com.app"); 

La función anterior devolverá un valor entero igual a R.drawable.us.

Así es como se accede con los nombres de los recursos.

+0

gracias mucho – Alex

+2

Sólo una nota rápida [getIdentifier] (http://developer.android.com/reference/android/content /res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String,%20java.lang.String%29) devuelve '0' si no se encontró dicho recurso. (0 no es un ID de recurso válido.) – razzak

16

Puede utilizar este código para obtener el identificador ...

Resources res = this.getResources(); 
int resID = res.getIdentifier(imagename, "drawable", this.getPackageName()); 
+0

Después de una gran cantidad de búsquedas, funciona muy bien. Gracias –

Cuestiones relacionadas