Проблема
Я хотел бы сделать что-то подобное в коде Android XML:
<string name="title">@string/app_name test</string>
<string name="title2">@string/app_name @string/version_name</string>
В отношении первой строки компилятора кода отображается эта ошибка
Не найден ресурс, который соответствует указанному имени (в 'title' со значением '@string/app_name test')
а вторая строка компилятора кода показывает эту ошибку
Не найден ресурс, который соответствует указанному имени (в 'title2' со значением '@string/app_name @string/version_name')
Вопрос
Кто-нибудь знает, как конкатенировать несколько строк в Android XML?
Обоснование
Плохая практика дублирования значений переменных во многих местах кода (в данном случае XML).
Ответ 1
Я попытался сделать подобный маневр сам, но мне сказали, что это не выполнимо в Android.
Интересно, что вы получаете сообщение об ошибке, которое указывает, что это действительно возможно, но из-за ошибок в сопоставлении ресурсов это невозможно сейчас. (Вы уверены, что вы указали строки "app_name" и "version_name" перед строками "title" и "title2"?)
Однако вы можете сделать что-то вроде:
<string name="title">%1$s test</string>
<string name="title2">%1$s %2$s</string>
<string name="app_name">AppName</string>
<string name="version_name">1.2</string>
И затем из кода Java сделайте что-то вроде:
Resources res = getResources();
String appName = res.getString(R.string.app_name);
String versionName = res.getString(R.string.version_name);
String title = res.getString(R.string.title, appName);
String title2 = res.getString(R.string.title2, appName, versionName);
Подробнее о форматировании строк в Android.
Надеюсь, что это поможет.