En bref: Je ne pense pas que vous pouvez, mais il semble être une solution de contournement: .
Si vous jetez un œil à la ressource Android ici:
http://developer.android.com/guide/topics/resources/string-resource.html
Vous voyez que sous la section tableau (tableau de chaînes, au moins), la "RÉFÉRENCE DES RESSOURCES" (comme vous l'obtenez à partir d'un XML) ne spécifie pas une façon de traiter les éléments individuels. Vous pouvez même essayer dans votre XML d'utiliser "@ array / yourarrayhere". Je sais qu'au moment de la conception, vous obtiendrez le premier article. Mais cela n'a aucune utilité pratique si vous voulez utiliser, disons ... le second, bien sûr.
TOUTEFOIS, il y a une astuce que vous pouvez faire. Vois ici:
Référencement d'une chaîne XML dans un tableau XML (Android)
Vous pouvez "tricher" (pas vraiment) la définition du tableau en adressant des chaînes indépendantes À L'INTÉRIEUR de la définition du tableau. Par exemple, dans votre 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>
En l'utilisant, vous pouvez utiliser "@ string / earth" et "@ string / moon" normalement dans vos champs XML "android: text" et "android: title", et pourtant vous ne perdrez pas la possibilité d'utiliser le tableau définition pour toutes les fins que vous vouliez en premier lieu.
Semble fonctionner ici sur mon Eclipse. Pourquoi n'essayez-vous pas de nous dire si cela fonctionne? :-)
name
balises aux <item> s ... * soupir *strings.xml
mais ne l'a pas faitvalues-fr
et le tableau est toujours mis à jour avec la version française. Tellement mal .. mais cool ça marche!Peut-être que cela aiderait:
Ainsi, vous obtenez la liste de tableaux sous forme de chaîne [], puis choisissez n'importe quel i, un_array [i].
la source
String myPref = preferences.getString(context.getResources().getString(R.string.my_pref), some_array [0]);
où my_pref était précédemment défini sur une certaine valeur some_array [x]La meilleure option serait d'utiliser simplement le tableau renvoyé par la ressource comme un tableau, ce qui signifie:
getResources().getStringArray(R.array.your_array)[position]
Il s'agit d'une approche de raccourci des approches mentionnées ci-dessus, mais elle fonctionne comme vous le souhaitez. Sinon, Android ne fournit pas d'indexation XML directe pour les tableaux basés sur XML.
la source
Malheureusement:
Il semble que vous ne puissiez pas référencer un seul élément d'un tableau dans values / arrays.xml avec XML. Bien sûr, vous pouvez en Java, mais pas en XML. Il n'y a aucune information à ce sujet dans la référence du développeur Android, et je n'ai pu en trouver nulle part ailleurs.
Il semble que vous ne puissiez pas utiliser un tableau comme clé dans la disposition des préférences. Chaque clé doit être une valeur unique avec son propre nom de clé.
Ce que je veux accomplir: je veux pouvoir parcourir les 17 préférences, vérifier si l'élément est coché, et si c'est le cas, charger la chaîne à partir du tableau de chaînes pour ce nom de préférence.
Voici le code que j'espérais accomplir cette tâche:
Ce que j'ai fait:
J'ai défini une chaîne unique pour chacun des éléments et référencé les chaînes uniques dans le. J'utilise la référence de chaîne unique pour les titres des cases de mise en page des préférences et le tableau pour ma boucle.
Pour parcourir les préférences, je viens de nommer les clés comme key1, key2, key3, etc. Puisque vous référencez une clé avec une chaîne, vous avez la possibilité de "construire" le nom de la clé au moment de l'exécution.
Voici le nouveau code:
la source
Une autre façon de le faire consiste à définir un tableau de ressources dans strings.xml comme ci-dessous.
puis définir un tableau de chaînes en utilisant les ressources ci-dessus
Vous pouvez également référencer la même chaîne dans d'autres fichiers XML en gardant DRY intact. L'avantage que je vois est qu'avec un seul changement de valeur, cela affecterait toutes les références dans le code.
la source