某处我读了如何在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 ...感谢您的任何建议。
答案 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
。