2011-08-09 22 views
11

Tengo muchas matrices de cadenas en mis archivos de recursos, y quiero acceder a ellas programáticamente dependiendo de la entrada del usuario.Acceso a un nombre de recurso programáticamente

int c = Getter.getCurrentNumber(); 
String[] info = getResources().getStringArray(R.array.n_<c>); 

Así que si c == 12, la información debe ser el conjunto de cadenas con el nombre "n_12". ¿Hay alguna manera de hacerlo y evitar hacer una declaración de cambio con cientos de casos?

Gracias

+0

He actualizado la respuesta. ¿Ayuda ahora? –

Respuesta

15

se puede obtener el identificador de recursos al igual que

int c = Getter.getCurrentNumber(); 
String resource = "n_" + c; 
int id = getResources().getIdentifier(resource, "array", "com.your.project"); 

Entonces sólo tiene que utilizar ese id

String[] info = getResources().getStringArray(id); 

Tener una mirada here para otro ejemplo de getResources().getIdentifier().

+0

Muchas gracias, que funcionó a la perfección. – leonsas

+0

funciona sin problemas, gracias, @Xavi Gil – andreimarinescu

2

Si desea obtener un recurso por su nombre (programación) y no está seguro de cómo abordar el recurso por su nombre (pero usted sabe cómo acceder a ella por R.), usted puede hacer esto:

  • la primera impresión el nombre exacto de los recursos, así:

Log.d("", context.getResources().getResourceName(R.id.whichYouAlreadyKnow));

(Nota:.. R.id.whichYouAlreadyKnow puede ser R.string * * R.drawable etc ...)
Ahora ya sabes la e xact dirección de Recursos nombre

  • tomar el nombre impreso y lo utilizan tal cual, como esto:

int id = getResources().getIdentifier(resource_name_that_printed_above, null, null);

Saludos

Cuestiones relacionadas