Android 如何将静态字符串与XML字符串资源连接起来?

Android 如何将静态字符串与XML字符串资源连接起来?,android,xml,reference,preferences,arrays,Android,Xml,Reference,Preferences,Arrays,我试图将静态“硬编码”字符串与字符串数组项的strings.xml中引用的字符串组合起来 我们的目标是创建一个动态度量列表,其中所有语言的数字都相同,但度量文本值可能会因语言而异,如下所示: <string-array name="interval_labels"> <item>30 @string/second</item> <item>1 @string/minute</item> <item>5

我试图将静态“硬编码”字符串与字符串数组项的
strings.xml
中引用的字符串组合起来

我们的目标是创建一个动态度量列表,其中所有语言的数字都相同,但度量文本值可能会因语言而异,如下所示:

<string-array name="interval_labels">
    <item>30 @string/second</item>
    <item>1 @string/minute</item>
    <item>5 @string/minute</item>
    <item>10 @string/minute</item>
    <item>15 @string/minute</item>
    <item>30 @string/minute</item>
    <item>60 @string/minute</item>
</string-array>

30@string/秒
1@string/分钟
5@string/分钟
10@string/分钟
15@string/分钟
30@string/分钟
60@string/分钟

现在,如果我删除
@string/..
引用之前的数字,它工作得很好(如前所述),但我想知道是否有方法检索引用的字符串并将其连接到“硬编码”字符串。

对不起,Android资源文件不支持这种语法。

有一种方法可以达到这种效果,方法是使用占位符定义字符串资源,并在代码隐藏中使用
getresources().getString()
style重载:

在string.xml中

<string name="secs">%1$d seconds</string>

使用XML实体是可能的

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
  <!ENTITY mintues "minutes">
  <!ENTITY minute "minute">
  <!ENTITY seconds "seconds">
]>

<resources>
  <string-array name="interval_labels">
    <item>30 &seconds;</item>
    <item>1 &minute;/item>
    <item>5 &minutes;</item>
    <item>10 &minutes;</item>
    <item>15 &minutes;</item>
    <item>30 &minutes;</item>
    <item>60 &minutes;</item>
  </string-array>
</resources>

]>
30秒;
1分钟/项目>
5分钟;
10分钟;
15分钟;
30分钟;
60分钟;

我使用了这个答案:

如果是这样的话,那很遗憾,我想我也必须将数字移动到strings.xml。使用xml实体,可以在类似strings.xml的Android xml文件中多次引用同一字符串。见下面我的答案。似乎表明这至少几乎是可能的。甚至完全可能。通过定义XML实体,这是可能的。我用了这个答案:
((TextView)findViewByID(R.id.secs_label)).setText(getResources().getString(R.string.secs, 25));
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
  <!ENTITY mintues "minutes">
  <!ENTITY minute "minute">
  <!ENTITY seconds "seconds">
]>

<resources>
  <string-array name="interval_labels">
    <item>30 &seconds;</item>
    <item>1 &minute;/item>
    <item>5 &minutes;</item>
    <item>10 &minutes;</item>
    <item>15 &minutes;</item>
    <item>30 &minutes;</item>
    <item>60 &minutes;</item>
  </string-array>
</resources>