Android: come posso ottenere una stringa dalle risorse usando il suo nome?


Answers

Ho lo stesso problema. Ma questo codice qui sotto funziona per me: verifica se il tuo packageName è corretto. Devi fare riferimento per il pacchetto radice della tua applicazione Android.

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

Mi piacerebbe avere 2 lingue per l'interfaccia utente e valori di stringa separati per loro nel mio file di risorse 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>

Ora ho bisogno di recuperare questi valori dinamicamente nella mia app:

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

Il mio problema è che i = 0 .

Perché non funziona nel mio caso?




C'è anche un set di stringhe Android predefinite come "Ok", "Annulla" e molte altre - quindi non devi dichiarare tutto. Sono disponibili semplicemente da:

getString(android.R.string.ok)

(In questo caso, stringa "Ok"). A proposito ci sono anche altre risorse Android disponibili come ad esempio immagini di icone ecc.







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



String myString = getString (R.string.mystring);

modo semplice