web-dev-qa-db-ja.com

Android XMLで複数の文字列を連結するには?

問題
Android XMLコードでそのようなことをしたいです:

<string name="title">@string/app_name test</string>
<string name="title2">@string/app_name @string/version_name</string>

コードコンパイラの最初の行については、このエラーが表示されます

指定された名前(値 '@ string/app_name test'の 'title')に一致するリソースが見つかりませんでした

そして、コードコンパイラの2行目はこのエラーを示しています

指定された名前(値 '@ string/app_name @ string/version_name'の 'title2')に一致するリソースが見つかりませんでした

質問
誰かがAndroid XMLで複数の文字列を連結する方法を知っていますか?

理論的根拠
コードの多くの場所(この場合はXML)で変数値を複製することは悪い習慣です。

71
Andrzej Duś

私は自分で同様の操作を試みましたが、これはAndroidでは実行できないと言われました。

おもしろいのは、実際にisが可能であることを示すエラーメッセージが表示されることですが、リソースマッチングのエラーが原因で現在は不可能です。 (「title」および「title2」文字列の前に「app_name」および「version_name」文字列を定義したことを確認しますか?)

ただし、次のようなことができます。

<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で文字列をフォーマットする の詳細。

お役に立てれば。

56
dbm