我需要显示动态文字'它由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
有什么想法吗?
答案 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));