2011-11-07 31 views
12

Tengo una pregunta corta:Cadena Convertir contiene una identificación en un entero Id

¿Cómo es posible convertir una cadena, que contiene el ID de un Disponibles, que es

String idString = "R.drawable.bubblegum"; 

a una Integer,

idInt 

de modo que pueda utilizar ese ID de la referencia de una imagen (, que se utiliza en un SimpleAdapter)

Por lo tanto, para hacer un ejemplo, no puedo hacer eso:

bubble.setImageDrawable(this.getResources().getDrawable(idString)); 
//not possible, cause idString is a String an not an Id/Int 

Por lo tanto, tener la cadena que se contiene el id, pero por desgracia, como una cadena.

Gracias!

+1

¿Está intentando convertir "R.drawable.bubblegum" en un int? Esto no sería posible. – flash

+1

@flash es posible usando 'getIdentifier' – Vladimir

+0

@flash: sí, lo estoy intentando. Pero no funcionó hasta ahora. – 10ff

Respuesta

-2

Al menos, no pude encontrar una solución para este problema. Parece que no hay forma de convertir un String "R.id.mytext" en un entero como R.id.mytext que se puede usar en findViewById (R.id.myText).

+0

Tengo el mismo problema si obtiene alguna solución, por favor avíseme. gracias –

1

int idInt = R.drawable.bubblegum;

menos que haya algo que me falta aquí.

+0

¿cómo findViewById (R.drawable.bubblegum) devuelve un ImageView? –

+0

Pasa una referencia al mismo. 'ImageView im = (ImageView) findViewById (R.id.bubblegum);'. 'findViewById' solo acepta números de ID dentro de la jerarquía de ViewGroup. No puedes usar la ID dibujable. – DeeV

+0

Falta el hecho de que la identificación se conoce solo como una cadena. – njzk2

0

si su idString es constante, es decir, no cambia durante el tiempo de ejecución, siga la respuesta de DeeV. Si cambia, puede echarle un vistazo al método getIdentifier.

13
+2

Cuando hago esto: String stringId = "R.id.icon"; long intId = getResources(). getIdentifier (stringId, "id", "mi.Paquete"); Log.d ("Prueba", intId + ""); entonces LogCat muestra 0. Wrong Way? – 10ff

21

Aunque esta pregunta ya es bastante antigua, lo que se está perdiendo es que "id" y "dibujable" son diferentes tipos de recursos.Así que en lugar de

getResources().getIdentifier(stringId, "id", "my.Package"); 

es

getResources().getIdentifier(stringId, "drawable", "my.Package"); 

También puede obtener el nombre del paquete con el contexto de la actividad como activityContext.getPackageName()

/** 
* Returns Identifier of String into it's ID as defined in R.java file. 
* @param pContext 
* @param pString defnied in Strings.xml resource name e.g: action_item_help 
* @return 
*/ 
public static int getStringIdentifier(Context pContext, String pString){ 
    return pContext.getResources().getIdentifier(pString, "string", pContext.getPackageName()); 
} 
+2

Debe marcarse como una respuesta aceptada –

+0

sí, esto funcionó para mí y resolvió mi problema –

3

Usted podría intentar el siguiente

int id = getResources().getIdentifier("arr_name"+positionSelected, 
         "array", rootview.getContext().getPackageName()); 

Yo uso en el menú desplegable de spinner, obtengo una cadena de matriz, siga el spinner padre puede ayudarlo!

Cuestiones relacionadas