10

在某处我读到了如何在 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

4 回答 4

21

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

如果您需要使用String.format(String, Object...)格式化字符串,则可以通过将格式参数放入字符串资源中来实现。

<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 开发人员官方文档。

于 2012-07-16T23:16:01.760 回答
7

这将解决您的问题:

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

现在getApplicationContext().getString(R.strings.another_string)will 的输出是string1 trolololo.

于 2012-07-16T20:13:34.183 回答
1

或者,您可以直接使用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包含 value Colors Gallery

于 2019-12-03T09:23:52.437 回答
0

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

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

于 2012-07-16T20:47:04.747 回答