R.string无法工作onCreate()

时间:2016-02-05 21:49:17

标签: android

我需要显示动态文字'它由2 R.strings和1 String变量连接:

事实是我需要在onCreate()方法的开头显示它,但是我收到了这个错误:

Caused by: android.content.res.Resources$NotFoundException: String resource ID #

这就是我试图做的事情:

text2.setText(R.string.still + playersAmount + R.string.LastRemaining); //Display Single

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

如果我告诉您拨打第一个电话号码,然后另一个电话号码,则无法将其汇总并调用结果。这就是你正在做的事情。

R.string.some_id整数映射到字符串并且可以进行本地化。本地化的工作原理是将相同的id映射到不同语言的不同值。它只能通过使用id来查找,而且只能解决它。修改该ID将导致无效结果:这是您看到的错误。

你需要单独获得这两个字符串。

getString(R.string.first) + playersAmount + getString(R.string.second)

然后适用字符串连接的常规规则。

此外,您应该查看字符串格式化程序,因为它们减少了手动连接的需要,如果您添加多种语言,这将导致问题。

<string name="formatted_string">I have %d players</string>

也可以像这样使用:

context.getString(R.string.formatted_string, playersAmount);

答案 1 :(得分:1)

致电getResources().getString(R.string.still)

getResources().getString(R.string.LastRemaining)

否则你只是引用R.java中的一个整数值,将它添加到playersAmount,然后从R.java添加另一个整数值,Android正在寻找这个整数的总和作为字符串资源id。

答案 2 :(得分:0)

对问题解决方案(基于inner_class7及其解释)的更完整解释是,您需要执行以下操作:

// Get Strings from resources
String still = getResources().getString(R.sting.still);
String lastRemaining = getResources.getString(R.string.LastRemaining);

// Concatenate Strings and set on TextView
text2.setText(still + playersAmount + lastRemaining);

正如他所提到的,当你说R.string.still时,你真的在​​谈论一个整数引用,这不是你想要做的。这里发生的魔力是getString是&#34;知道&#34;您希望与该特定ID关联的String。如果您有任何问题,请告诉我。

答案 3 :(得分:0)

当您执行R.string.still + playersAmount + R.string.LastRemaining时,您可以将3 int添加到一起(并在结果中查找资源字符串)

如果您想从资源中获得String,则必须使用getString(int)

http://developer.android.com/reference/android/content/Context.html#getString(int)

为您解决方案text2.setText(getString(R.string.still) + playersAmount + getString(R.string.LastRemaining));

我建议您使用带参数<string name="stillLastRemaining">Still %d last remaining</string>的字符串并使用text2.setText(getString(R.string.stillLastRemaining, playersAmount));