Как конкатенировать несколько строк в XML-андроиде?

Проблема
Я хотел бы сделать что-то подобное в коде 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.

Надеюсь, что это поможет.