1. ホーム
  2. アンドロイド

[解決済み】strings.xmlで、ある文字列を別の文字列から参照する?

2022-04-08 17:54:30

質問

以下のように、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のテキストは、ユーザーに新しいアイテムを追加する方法を通知するためのものです。私は、レイアウトが変更されても大丈夫なようにしたいと思います(そうです、私が問題の馬鹿です :-)。

解決方法は?

よく使う文字列(アプリ名など)を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>

UPDATE

エンティティをグローバルに定義することも可能です。

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>