Android: Comment obtenir une chaîne à partir de ressources en utilisant son nom?


Answers

J'ai le même problème. Mais ce code ci-dessous fonctionne pour moi: Vérifiez si votre nom de package est correct. Vous devez vous référer au package racine de votre application Android.

private String getStringResourceByName(String aString) {
      String packageName = getPackageName();
      int resId = getResources().getIdentifier(aString, "string", packageName);
      return getString(resId);
    }
Question

Je voudrais avoir 2 langues pour l'interface utilisateur et séparer les valeurs de chaîne pour eux dans mon fichier de ressources res\values\strings.xml :

<string name="tab_Books_en">Books</string>
<string name="tab_Quotes_en">Quotes</string>
<string name="tab_Questions_en">Questions</string>
<string name="tab_Notes_en">Notes</string>
<string name="tab_Bookmarks_en">Bookmarks</string>

<string name="tab_Books_ru">Книги</string>
<string name="tab_Quotes_ru">Цитаты</string>
<string name="tab_Questions_ru">Вопросы</string>
<string name="tab_Notes_ru">Заметки</string>
<string name="tab_Bookmarks_ru">Закладки</string>

Maintenant, j'ai besoin de récupérer ces valeurs de manière dynamique dans mon application:

spec.setContent(R.id.tabPage1);
String pack = getPackageName();
String id = "tab_Books_" + Central.lang;
int i = Central.Res.getIdentifier(id, "string", pack);
String str = Central.Res.getString(i);

Mon problème est que i = 0 .

Pourquoi ça ne marche pas dans mon cas?




Il y a aussi un ensemble de chaînes Android prédéfinies telles que "Ok", "Annuler" et bien d'autres - vous n'avez donc pas à tout déclarer. Ils sont disponibles simplement par:

getString(android.R.string.ok)

(Dans ce cas, "Ok" chaîne). BTW il y a aussi d'autres ressources Android disponibles comme par exemple des images d'icônes etc.




getResources().getString(getResources().getIdentifier("propertyName", "string", getPackageName()))






Chaîne myString = getString (R.string.mystring);

moyen facile