2010-05-30 3 views
2

OK, j'ai le code pour me permettre d'indexer via les ressources de chaîne. Maintenant, comment puis-je obtenir la valeur d'un élément de ressource spécifique sans connaître son nom?Indexation via les ressources de chaîne Android

est ici la boucle d'index:

Field[] fLst = R.string.class.getFields(); 

for(Field f : fLst){ 

    Log.i(dbgTag, "Field Entry: R.string." + f.getName()); 

} 

Merci pour vos efforts ...

Répondre

2

D'abord, vous connaissez le nom de la ressource. Vous le mettez même dans votre appel Log. Ainsi, une option serait d'utiliser getIdentifier() sur un objet Resources (généralement obtenu en appelant getResources() sur votre Activity ou autre Context).

Ou, étant donné que vous avez l'objet Field, appelez f.getInt(R.string.class).

Dans les deux cas (getIdentifier() ou getInt()), vous avez maintenant l'identifiant numérique de la ressource, à quel point vous pouvez appeler getString() sur votre Activity pour obtenir la valeur réelle String. L'utilisation de la réflexion - que ce soit directement ou via getIdentifier() - va être lente. S'il vous plaît évitez l'approche que vous essayez si possible. Si vous devez absolument utiliser la réflexion, assurez-vous de mettre en cache vos résultats, afin de ne pas avoir à faire les mêmes recherches à plusieurs reprises.

+0

Très apprécié. Bien sûr, cela semble si évident maintenant. Et, oui, je suis pleinement conscient de la dépense d'utilisation de la réflexion. – gssi

+0

Hors sujet, mais lié à la ressource de chaîne: Si l'application est monolingue, et de petits toasts comme _ "Veuillez entrer une valeur inférieure à 100" _ doit être affiché, devrions-nous encore suivre la méthodologie _String Resource_? –

Questions connexes