получение строки с динамической переменной из xml-строк

#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")