Cómo acceder a una cadena utilizando un nombre de cadena dinámica en android (similar a eval en javascript)?
Estoy tratando de acceder a variables de cadena utilizando nombres dinámicos dependiendo de qué posición está mi galería. Para obtener el valor de una cadena usando un nombre fijo, utilizo lo siguiente que está bien (la cadena se llama pic1info):
String strTest = getResources().getString(R.string.pic1info);
Mis cadenas se llaman pic1info, pic2info, pic3info etc y quiero reemplazar la definición estática de pic1info para incluir la posición para pasar el contenido de la siguiente cadena en lugar de pic1info por encima de modo que devuelve una cadena diferente en función de la posición actual:
- Múltiples cargadores en la misma actividad
- Desplazamiento pequeño al calcular la rotación en función del punto de contacto
- Personalizar la imagen referida De Html cadena
- No se puede detectar el número de llamada entrante utilizando BroadcastReceiver
- El nombre del proyecto no aparece en mi eclipse
String strDynamicStringName= "pic" + position + "info";
En javascript el equivalente sería eval, estoy seguro de que hay una manera sencilla de hacer esto, pero no puedo trabajar cómo!
Muchas gracias por su ayuda como siempre!
Dave
- GetChildDrawingOrder llamado / utilizado de forma errática?
- Android Studio - Java JVM
- Configurar Alpha / Opacidad de Diseño
- Android juego rpg inventario del sistema
- ¿Algún consejo sobre cómo acelerar esto en Android?
- OnBackStackChanged () se llama dos veces cuando se agrega nuevo fragmento en backstack
- GAE Debe llamar a uno de set * BlobStorage () primero
- Matando un hilo en java android
No, no hay forma sencilla de hacerlo en Java, pero puede crear una matriz de ints, donde cada índice representa el valor R de esa cadena.
private static final int[] LOOKUP_TABLE = new int[] { R.string.pic1info, R.string.pic2info, R.string.pic3info, R.string.pic4info };
Conseguir una cadena sería entonces:
String strTest = getResources().getString(LOOKUP_TABLE[position]);
Utilice esto: android.content.res.Resources.getIdentifier
int resID = getResources().getIdentifier("pic" + position + "info", "string", getPackageName()); String strTest = getResources().getString(resID);
Inspirado en la respuesta de Kaj, también puedes poner una matriz String en tu archivo XML:
<resources> <string-array name="picInfos"> <item>value of pic1info goes here</item> <item>value of pic2info goes here</item> <item>value of pic3info goes here</item> </string-array> </resources>
- Cómo realizar una cola persistente en Android
- Android toma una captura de pantalla en un dispositivo enraizado