Le référencement d'une chaîne dans un tableau de chaînes de ressource avec xml
J'ai des préférences où vous pouvez activer/désactiver ce que les articles seront affichés sur le menu. Il y a 17 éléments. J'ai fait un tableau de chaînes de values/arrays.xml avec des titres pour chacun de ces 17 éléments.
J'ai preferences.xml qui a la mise en page de mon fichier de préférences, et je voudrais faire référence à un seul élément de la chaîne de tableau à utiliser comme titre.
Comment puis-je faire cela?
Dans le Android de référence du développeur, je vois comment je peut faire référence à une seule chaîne avec le XML, mais pas comment je peut faire référence à une chaîne de caractères à partir d'un tableau des ressources en XML.
Vous devez vous connecter pour publier un commentaire.
En bref: je ne pense pas que vous pouvez, mais il semble être une solution de contournement:.
Si vous prenez un coup d'oeil dans le Android de Ressources ici:
http://developer.android.com/guide/topics/resources/string-resource.html
Vous voyez que dans le tableau de la section (tableau de chaîne, au moins), la "RÉFÉRENCE de la RESSOURCE" (que vous obtenez à partir d'un fichier XML) ne précise pas la manière d'aborder les éléments individuels. Vous pouvez même l'essayer dans votre XML à utiliser "@tableau/yourarrayhere". Je sais qu'au moment de la conception, vous obtiendrez le premier élément. Mais c'est d'aucune utilité si vous souhaitez l'utiliser, disons... la deuxième, bien sûr.
CEPENDANT, il y a un truc que vous pouvez faire. Voir ici:
La référence à une chaîne XML dans un document XML en Tableau (Android)
Vous pouvez "tricher" (pas vraiment) la définition de tableau en s'attaquant indépendant des chaînes à l'INTÉRIEUR de la définition de la matrice. Par exemple, dans votre strings.xml:
En utilisant cela, vous pouvez utiliser "@string/terre" et "@string/lune" normalement dans votre "android:text" et "android:title" champs XML, et pourtant, vous ne perdrez pas la possibilité d'utiliser la définition de tableau pour quelles fins il est destiné en premier lieu.
Semble fonctionner ici sur mon Eclipse. Pourquoi ne pas essayer et nous dire si cela fonctionne? 🙂
name
les balises <item>s...*soupir*/values/strings.xml
alors vous voulez utiliser une chaîne de/values-fr/strings.xml
ce fichier ne contient pas le tableau, suce!strings.xml
mais n'a pas envalues-fr
et le tableau toujours mis à jour avec la version française. Si mal .. mais c'est cool ça marche!!!values
est appliqué à titre subsidiaire par rapport à d'autres lieux. Par conséquent, lorsque vous déclarez le tableau que dansvalues
, en utilisant cette méthode, vous avez seulement besoin de traduire les chaînes, depuis la déclaration de tableau sera appliqué à titre subsidiaire pour les paramètres régionaux français. Toutefois, les cordes à l'intérieur de la matrice sont référencées pour les paramètres régionaux français parce que cela a déjà ces chaînes. Il n'est pas vraiment une surprise pour moi quand vous avez de la documentation à l'esprit.resources.arsc
fichier, à l'intérieur de l'APK. Ce fichier est, autant que je sache, un table, donc je ne pense vraiment pas que nous pouvons supposer que les ressources de la compilation ne sera pas seulement inline l'adresse de référence au contenu d'origine. Encore une fois, je ne connais pas la structure de laresources.arsc
fichier. Cependant, même si cela signifie en regardant les deux emplacements d'adresse au lieu d'un seul, directement (et j'en doute), qui serait vraiment du gaspillage de un point, nous devons nous soucier de compromis et de l'entretien? C'était mon point de départ.Peut-être que cela aiderait:
De sorte que vous obtenez le tableau-liste comme une Chaîne de caractères [], puis choisissez tout i, some_array[i].
String myPref = preferences.getString(context.getResources().getString(R.string.my_pref), some_array [0]);
où my_pref était précédemment fixé à une valeur some_array[x]La meilleure option serait d'utiliser la ressource tableau retourné comme un tableau,
sens :
getResources().getStringArray(R.array.your_array)[position]
C'est un raccourci approche des approches mentionnées ci-dessus, mais fait le travail dans la mode que vous voulez. Sinon android ne fournit directement l'indexation XML de xml basés sur des tableaux.
Malheureusement:
Il semble que vous ne pouvez pas faire référence à un élément unique à partir d'un tableau dans values/arrays.xml avec XML. Bien sûr, vous pouvez en Java, mais pas le XML. Il n'y a pas d'information sur le faire dans le Android de référence du développeur, et je ne pouvais pas trouver tout n'importe où ailleurs.
Il semble que vous ne pouvez pas utiliser un tableau comme un élément clé dans les préférences de mise en page. Chaque clé est d'être une valeur unique avec son propre nom de la clé.
Ce que je veux accomplir:
Je veux être en mesure de boucle à travers les 17 préférences, vérifier si l'élément est coché, et si elle l'est, charge de la chaîne à partir du tableau de chaîne pour que la préférence de nom.
Voici le code que j'espérais serait la fin de cette tâche:
Ce que j'ai fait:
J'ai mis une chaîne unique pour chacun des articles, et fait référence à l'unique chaînes dans le . J'utilise la chaîne unique de référence pour les préférences de mise en page case les titres, et le tableau de ma boucle.
Pour faire une boucle dans les préférences, j'ai nommé les touches comme key1, key2, clé3, etc. Puisque vous faites référence à une clé avec une chaîne, vous avez la possibilité de "construire" le nom de la clé lors de l'exécution.
Voici le nouveau code:
Une autre façon de le faire est de définir un tableau dans strings.xml comme ci-dessous.
puis de définir un tableau de chaîne à l'aide de ces ressources
Vous pouvez consulter la même chaîne dans d'autres xmls trop SÈCHE intacte.
L'avantage que je vois est que, avec un seul changement de valeur, il serait en effet toutes les références dans le code.