#android #kotlin
#Android #kotlin
Вопрос:
Мне нужно получить текст из строки xml, но с динамической переменной. Я объясняю. Обычно мы получаем текст формы R.string.name
из strings
xml, мне нужно что-то вроде R.string.variable
, где переменная — это значение X, полученное из базы данных.
Есть идеи, как я могу сделать это выше?
Комментарии:
1. вы могли бы использовать строки dynamics, только объявите в своем XML-файле свою строку: <имя строки=»dynamic_string»> Ваше динамическое значение = %s</string> и извлеките вашу строку с помощью getString(R.string.dynamic_string, «yourValue»)
Ответ №1:
Чтобы получить строку динамически, используйте getIdentifier
метод в Resources
классе. Вам также необходимо указать имя пакета.
Это пример кода в Kotlin:
private fun getStringResourceByName(context: Context, resourceName: String): String? {
try {
val packageName = packageName
val resId = context.resources.getIdentifier(resourceName, "string", packageName)
Log.i("Resource", "Resource Id: $resId")
return getString(resId)
}catch (ex : Exception){
Log.e("Error", ex.message)
}
return null
}
Версия Java:
private String getStringResourceByName(Context context, String resourceName) {
try {
String packageName = getPackageName();
int resId = context.getResources().getIdentifier(resourceName, "string", packageName);
Log.i("Resource", "Resource Id:" resId);
return getString(resId);
}catch (Exception ex){
Log.e("Error", ex.getMessage());
}
return null;
}
Использование:
val string = getStringResourceByName(this,"app_name")