在 android 的 editText 中使用 R.String

Using R.String in an editText in android

我的项目存储的所有字符串都在 string.xml 文件中。在大多数情况下,我使用它们没有问题,但出于某种原因,当我将字符串与整数混合时,它会向 editText 输出一个整数值,例如,如果我这样做:

editText.setText(R.string.x_plays + j)

我想向 GUI 显示 "X Plays: 3" 但是它向 GUI 显示一个大整数。如果我在没有 j(它是一个整数)的情况下这样做就没问题。

editText.setText(R.string.x_plays)

这只显示字符串 "X Plays: "。

所以问题显然是试图将一个整数与 R.string 连接起来,但我不知道如何解决这个问题。我尝试使用 stringBuilder 并在 R.string 和整数周围添加空字符串 (""),但返回了类似的结果。我该如何解决这个问题?

改用getString。既然要拼接String,那就获取String拼接:

getString(R.string.blah);

其实R.string.something是一个整数(参考)。

editText.setText(int)也把这个int值作为参数。您还可以将字符串作为参数发送到 setText。但首先你必须使用 getString() 函数将 string.xml 中的字符串作为字符串获取。

之所以会出现这种情况,是因为R.string.x_plays实际上是一个整数资源ID,可以通过某些方法将其转换为可以显示的字符串。其中之一是 setText。但是,如果您向此 ID 添加数字,则它可能不再有效。

最简单的解决方案是只写 getString(R.string.x_plays) + j

您也可以将字符串更改为格式字符串,例如 X plays: %1$d 并改写 getString(R.string.x_plays, j)

参见:String Resources

当您想将静态字符串(来自 string.xml)与您的动态值(如 i)连接时,您可以使用字符串格式参数;

在Strings.xml

<string name="jump_message">I jumped from %1$d storey building</string>

在代码中

int i = 99;
String finalMessage = String.format(getString(R.string.jump_message), i);
//finalMessage becomes 'I jumped from 99 storey building'