676 Stimmen

Android: Wie erhalte ich eine Zeichenkette aus einer Ressource anhand ihres Namens?

Ich möchte 2 Sprachen für die UI und separate Zeichenfolgenwerte für sie in meiner Ressourcendatei haben 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>

Jetzt muss ich diese Werte dynamisch in meiner Anwendung abrufen:

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);

Mein Problem ist, dass i = 0 .

Warum funktioniert es in meinem Fall nicht?

1voto

M Shafaei N Punkte 321

Sie können dies in einer Aktivität ausprobieren:

getResources().getString(R.string.your string name);

In anderen Situationen wie Fragmenten,... verwenden

getContext().getResources().getString(R.string.your string name);

0voto

O Thạnh Ldt Punkte 829

Um sicher zu sein, sollten Sie hinzufügen: mContext.getResources().getString(R.string.your_string);

mContext kann sein: context in onAttach() von Fragment oder this von Activity.

-2voto

Owais Yosuf Punkte 174
R.string.<string_name>

Verwenden Sie diese Zeile direkt in Ihrer Java-Datei. Halten Sie es einfach.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X