2011-12-29 9 views
5

en mi aplicación Realizo una solicitud web que arroja algún código de resultado, p. 105. Tengo recursos de cadena que se parecen a queAndroid Dynamic String Resources

<string name="r105">O.K.</string> 
<string name="r106">Something went wrong.</string> 
<string name="r333">Fatal error.</string> 

Ahora quiero hacer algo así

Toast.makeText(parent.getApplicationContext(), 
     parent.getString(R.string.r+resultCode), Toast.LENGTH_LONG).show(); 

mientras r+resultCode es el identificador de recursos.

Esto no funciona. ¿Alguna idea de cómo hacerlo?

+0

En el código anterior se utilizó el recurso como r105 pero, al acceder a usted escrito R.string.r ¿Es correcto? –

+0

Ahora entendí tu pregunta, intentaré darme 5 min. –

Respuesta

13

probar este getResources().getIdentifier(name, defType, defPackage) de una manera sencilla.

Toast.makeText(this, getResources().getIdentifier("r"+resultcode, "string", 
getPackageName()), Toast.LENGTH_LONG).show(); 
+0

perfecto, gracias! –

0

Probar como a continuación, está trabajando para mí. Use parent.getApplicationContext() para usted.

String str = getString(R.string.r)+resultCode; 

     Toast.makeText(getApplicationContext(), 
       str, Toast.LENGTH_LONG).show(); 
+1

Creo que getString (R.string.r) + código de resultado no funcionará porque no hay un recurso llamado "r" –

+0

Di solo parte de mi código, no del todo. Lo usé en mi proyecto en el archivo xml. –

+0

@ArtWorkAD es mi sugerencia que trabaja para usted? –

4

Puedes hacerlo usando getResources().getIdentifier(name, defType, defPackage). Algo como esto:

// Assuming resultCode is an int, use %s for String 
int id = getResources().getIdentifier(String.format("r%d", resultCode), 
             "string", getPackageName()); 
String result = getString(id); 
+0

Aparece un error "% d no se puede formatear los argumentos de java.lang.String" –

+2

Ah, pensé resultCode fue un int. Pruebe% s para string o simplemente haga "r" + resultCode. – aspartame

0

Una forma simple de obtener el ID de recurso de la cadena. Aquí resourceName es el nombre del recurso ImageView en una carpeta dibujable que también está incluida en el archivo XML. Cuando obtengo "id" puede usar "cadena".

int resID = getResources().getIdentifier(resourceName, "id", getPackageName()); 
ImageView im = (ImageView) findViewById(resID); 
Context context = im.getContext(); 
int id = context.getResources().getIdentifier(resourceName, "drawable", 
context.getPackageName()); 
im.setImageResource(id);