Android: Как загрузить ресурсы налету (on runtime)
Привет, ЛОР!
Мне нужна помощь в следующем вопросе. Как создать Toast c некоторым сообщением, прочитав его налету из, например, values/strings.xml?
Я пишу многоязычное приложение, а ресурсы в Android - прекрасный инструмент для автоматической локализации. Например я обслуживаю две локализации en_GB (стандартно values/strings.xml) и ru_RU (values-ru/strings.xml). Теперь мне бы хотелось поттягивать сообщения для пользователя в зависимости от его настроек локализации.
К примеру, создадим следующие ресурсы
values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="str_example">String example</string>
</resources>
values-ru/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- russian alternative -->
<resources>
<string name="str_example">Строка для примера</string>
</resources>
Я пробовал разные способы доступа к ресурсам типа String:
Пример 1.
Toast.makeText(this,
getResources().getString(R.string.str_example),
Toast.LENGTH_LONG).show();
Пример 2. (после гугльошки)
int resID = getResources().getIdentifier(
"str_example",
"string",
getPackageName());
Toast.makeText(this,
getResources().getString(resID),
Toast.LENGTH_LONG).show();
После запуска получаю один и тот же результат - приложение посыпалось.
P.S. Также перепробовал все известные мне контексты:
1) this
2) CurrentActivity.this
3) Передавал Context параметром в функцию
4) getApplicationContext()
5) getBaseContext()