78

問題
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')

コードコンパイラの2行目に関して、このエラーが表示されます

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

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

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

4

1 に答える 1

59

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

興味深いことに、実際には可能であることを示すエラー メッセージが表示されますが、リソース マッチングのエラーにより、現在は不可能です。(「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 での文字列の書式設定の詳細。

お役に立てれば。

于 2011-04-23T14:54:39.253 に答える