strings.xml中的Android变量

时间:2012-07-16 20:06:53

标签: android xml parsing variables

某处我读了如何在XML文档中使用变量。他们说这很简单,我想是的。我在Android strings.xml文件中成功地使用了它。我一整天都在使用它,直到突然android停止解析它并停止将其视为变量。

我用这种方式使用它:

<resources>
<string name="some_string">string1</string>
<string name="another_string"> {$some_string} trolololo </string>
</resources>

并在java中通过以下方式访问它:getApplicationContext()。getString(R.strings.another_string);

getApplicationContext().getString(R.strings.another_string);

在输出中我曾经收到过如下字符串:

string1 trolololo

现在我只收到:

{$some_string} trolololo

有谁知道出了什么问题?我知道Android的XML可能与标准XML不同,但是它可以用于工作。 Awww ...感谢您的任何建议。

4 个答案:

答案 0 :(得分:18)

假设您要将字符串值作为another_string中的参数传递,那么您的字符串格式不正确,无法接收该参数,如果您尝试使用它,则输出将为{$some_string} trolololo

  

如果需要使用 String.format(String,   对象...),然后您可以通过将您的格式参数放入   字符串资源。

<resources>
<string name="some_string">string1</string>
<string name="another_string">%1$s trolololo</string>
</resources>

现在您可以使用应用程序中的参数格式化字符串,如下所示:

String arg = "It works!";
String testString = String.format(getResources().getString(R.string.another_string), arg);
Log.i("ARG", "another_string = " + testString);

这样做的输出字符串将是another_string = It works! trolololo

查看Android开发者官方文档here

答案 1 :(得分:7)

这将解决您的问题:

<resources>
    <string name="some_string">string1</string>
    <string name="another_string">@string/some_string trolololo</string>
</resources>

现在getApplicationContext().getString(R.strings.another_string)的输出将为string1 trolololo

答案 2 :(得分:0)

我不确定你最初做的第一件事是如何使用大括号,但我之前遇到过这个问题而无法找到解决方案..

现在我要做的是分别调用这些字符串并在运行时连接它们。

答案 3 :(得分:0)

或者,您可以直接使用getResources().getString(R.string.activity_title, arg)

例如

<resources>
   <string name="postfix_title">%s Gallery</string>
</resources>

然后简单地

String arg = "Colors";
String title = getResources().getString(R.string.postfix_title, arg);

这将导致title包含值Colors Gallery