以下のように、strings.xml ファイル内の別の文字列から文字列を参照したいと思います (特に、「message_text」文字列コンテンツの末尾に注意してください)。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="button_text">Add item</string>
<string name="message_text">You don't have any items yet! Add one by pressing the \'@string/button_text\' button.</string>
</resources>
上記の構文を試してみましたが、テキストは「@string/button_text」をクリアテキストとして出力します。これは私が望んでいることではありません。メッセージ テキストには「まだアイテムがありません。[アイテムの追加] ボタンを押してアイテムを追加してください。」と出力してほしいです。
私が望むことを実現するための既知の方法はありますか?
理由:
私のアプリケーションにはアイテムのリストがありますが、そのリストが空の場合は、代わりに「@android:id/empty」TextView を表示します。その TextView のテキストは、ユーザーに新しいアイテムを追加する方法を知らせるためのものです。レイアウトを変更しても問題が起こらないようにしたいのです (そうです、私が問題の愚か者です :-)
ベストアンサー1
Java コードを使わずに、頻繁に使用する文字列 (例: アプリ名) を XML に挿入する便利な方法:ソース
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY appname "MyAppName">
<!ENTITY author "MrGreen">
]>
<resources>
<string name="app_name">&appname;</string>
<string name="description">The &appname; app was created by &author;</string>
</resources>
アップデート:
エンティティをグローバルに定義することもできます。例:
res/raw/entities.ent:
<!ENTITY appname "MyAppName">
<!ENTITY author "MrGreen">
res/values/string.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY % ents SYSTEM "./res/raw/entities.ent">
%ents;
]>
<resources>
<string name="app_name">&appname;</string>
<string name="description">The &appname; app was created by &author;</string>
</resources>