En resumen: No creo que se puede, pero no parece haber una solución: .
Si echa un vistazo a los recursos de Android aquí:
http://developer.android.com/guide/topics/resources/string-resource.html
Verá que en la sección de matriz (matriz de cadena, al menos), la "REFERENCIA DE RECURSOS" (como se obtiene de un XML) no especifica una forma de abordar los elementos individuales. Incluso puede intentar en su XML usar "@ array / yourarrayhere". Sé que en tiempo de diseño obtendrás el primer artículo. Pero eso no tiene ningún uso práctico si quieres usar, digamos ... el segundo, por supuesto.
SIN EMBARGO, hay un truco que puedes hacer. Mira aquí:
Hacer referencia a una cadena XML en una matriz XML (Android)
Puede "engañar" (no realmente) la definición de matriz al direccionar cadenas independientes DENTRO de la definición de la matriz. Por ejemplo, en su strings.xml:
<string name="earth">Earth</string>
<string name="moon">Moon</string>
<string-array name="system">
<item>@string/earth</item>
<item>@string/moon</item>
</string-array>
Al usar esto, puede usar "@ string / earth" y "@ string / moon" normalmente en sus campos XML "android: text" y "android: title", y aún así no perderá la capacidad de usar la matriz definición para cualquier propósito que pretendía en primer lugar.
Parece trabajar aquí en mi Eclipse. ¿Por qué no intentas decirnos si funciona? :-)
name
etiquetas a <item> s ... * suspiro *strings.xml
pero no lo hizovalues-fr
y la matriz aún se actualizó con la versión en francés. Muy mal ... pero genial, ¡funciona!Quizás esto ayude:
Entonces obtienes el array-list como String [] y luego eliges cualquier i, some_array [i].
fuente
String myPref = preferences.getString(context.getResources().getString(R.string.my_pref), some_array [0]);
donde my_pref se configuró previamente en algún valor some_array [x]La mejor opción sería simplemente usar la matriz de recursos devueltos como una matriz, lo que significa:
getResources().getStringArray(R.array.your_array)[position]
Este es un enfoque de acceso directo de los enfoques mencionados anteriormente, pero hace el trabajo de la manera que desea. De lo contrario, Android no proporciona indexación XML directa para matrices basadas en XML.
fuente
Desafortunadamente:
Parece que no puede hacer referencia a un solo elemento de una matriz en values / arrays.xml con XML. Por supuesto que puedes en Java, pero no en XML. No hay información sobre cómo hacerlo en la referencia del desarrollador de Android, y no pude encontrar ninguna en ningún otro lado.
Parece que no puede usar una matriz como clave en el diseño de preferencias. Cada clave tiene que ser un valor único con su propio nombre de clave.
Lo que quiero lograr: quiero poder recorrer las 17 preferencias, verificar si el elemento está marcado y, si es así, cargar la cadena de la matriz de cadenas para ese nombre de preferencia.
Aquí está el código que esperaba completaría esta tarea:
Lo que hice:
Establecí una sola cadena para cada uno de los elementos, y hice referencia a las cadenas individuales en el. Utilizo la referencia de cadena única para los títulos de las casillas de verificación de diseño de preferencias y la matriz para mi bucle.
Para recorrer las preferencias, acabo de nombrar las claves como clave1, clave2, clave3, etc. Dado que hace referencia a una clave con una cadena, tiene la opción de "construir" el nombre de la clave en tiempo de ejecución.
Aquí está el nuevo código:
fuente
Otra forma de hacerlo es definir una matriz de recursos en strings.xml como a continuación.
y luego definiendo un conjunto de cadenas usando los recursos anteriores
También puede referir la misma cadena a otros xmls manteniendo DRY intacto. La ventaja que veo es que con un solo cambio de valor afectaría todas las referencias en el código.
fuente