在 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.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'
我的项目存储的所有字符串都在 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.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'