Android: ¿Cómo obtengo cadenas de recursos usando su nombre?


Answers

Tengo el mismo problema. Pero este código a continuación me funciona: compruebe si su packageName es correcto. Debes consultar el paquete raíz de tu aplicación Android.

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

Me gustaría tener 2 idiomas para la interfaz de usuario y separar los valores de cadena para ellos en mi archivo de recursos 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>

Ahora necesito recuperar estos valores dinámicamente en mi aplicación:

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

Mi problema es que i = 0 .

¿Por qué no funciona en mi caso?




También hay un conjunto de cadenas de Android predefinidas como "Ok", "Cancelar" y muchas otras, por lo que no tiene que declararlo todo. Están disponibles simplemente por:

getString(android.R.string.ok)

(En este caso, cadena "Ok"). Por cierto, también hay otros recursos de Android disponibles como, por ejemplo, imágenes de iconos, etc.




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

camino fácil




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