Obtenir une chaîne de Strings.xml par une variable

Je veux obtenir une chaîne de strings.xml. Je sais comment faire cela. Mais mon problème est autre chose: j'ai une variable de chaîne qui change à chaque fois, et chaque fois qu'elle change, je veux regarder strings.xml et vérifier si cette variable de chaîne existe dans Strings.xml, puis obtenir du texte.

par exemple:

  • Faire partie d'une chaîne en gras dans la visualisation de texte
  • Comment dessiner un rectangle avec des coins arrondis à l'aide de XML?
  • Quand on s'appelle onRestoreInstanceState?
  • Quelle est l'utilisation d'un ... -v21.xml?
  • Comment démarrer une activité ou un service avant qu'une application de l'application ne soit désinstallée par l'utilisateur?
  • Glissez les animations Android de droite à gauche
  • String title="sample title" \\ which changes String city= "sample city" String s = getResources().getString(R.string.title); 

    Dans la troisième ligne: title is a String, et il n'y a pas de "titre" nommé String dans Strings.xml Comment puis-je le faire? Aidez-moi, s'il vous plaît

    4 Solutions collect form web for “Obtenir une chaîne de Strings.xml par une variable”

    Pour autant que je puisse le dire, vous pouvez utiliser public int getIdentifier (String name, String defType, String defPackage) . Son utilisation est cependant découragée.

    Pour l'utiliser (je ne l'ai pas fait, mais j'avais déjà lu sur la méthode), vous devrez probablement:

     int identifier = getResources().getIdentifier ("title","string","your.package.name.here"); if (identifier!=0){ s=getResources().getString(identifier); } else{ s="";//or null or whatever } 

    Une chose que vous pourriez faire pour obtenir des chaînes à partir de clés dynamiques est de faire 2 ensembles de chaînes et de les mettre dans un HashMap.

    Arrays.xml:

     <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="title_keys"> <item>title1</item> <item>title2</item> <item>title3</item> </string-array> <string-array name="title_values"> <item>Real Title 1</item> <item>Real Title 2</item> <item>Real Title 3</item> </string-array> </resources> 

    Et dans votre code:

     String[] titleKeys = getResources().getStringArray(R.array.title_keys); String[] titleValues = getResources().getStringArray(R.array.title_values); HashMap<String, String> titles = new HashMap<String, String>(); for(int i = 0; i < titleKeys.length; i++) { titles.put(titleKeys[i], titleValues[i]); } 

    Enfin, pour obtenir vos titres à partir d'une clé dynamique:

     titles.get(titleFromSomewhere); 

    Vous ne le feriez pas. Vous utilisez strings.xml pour des chaînes constantes. Ce que vous voulez faire, c'est l'une des deux choses.

    1) Vous voulez qu'une String soit constante, mais l'une des quelques options (par exemple, un élément dans une liste de pays). Dans ce cas, placez toutes les options dans strings.xml et maintenez celle que vous utilisez actuellement dans un int. Lorsque vous devez obtenir la chaîne actuelle, utilisez getString ().

    2) Il peut vraiment s'agir de n'importe quelle chaîne (par exemple, un nom entré par l'utilisateur). Dans ce cas, il ne passe pas dans strings.xml, vous utilisez simplement une variable String.

    Cela ne peut pas être fait, les ressources sont converties en des ints uniques dans R.java, et celles-ci sont utilisées pour rechercher vos ressources de chaîne réelles.

    Donc R.string.title est en fait quelque chose comme 0x78E84A34 .

    Vous pouvez écrire votre propre classe qui gère les chaînes pour vous en utilisant un HashMap<String,String> pour rechercher des chaînes complètes pour des chaînes de "clé" plus courtes.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.