我有一些字符串,这些字符串已放在我的Android项目中的Android values/strings.xml文件中。
<resources>
<string name="level_reached_label">Level Reached: </string>
<string name="endgame_textP1">You have scored </string>
<string name="endgame_textP2"> points in </string>
<string name="endgame_textP3"> seconds </string>
</resources>
我在我的Java类之一中用这条线打电话给字符串
endLevelLabel.setText(R.string.level_reached_label + level);
endInfoLabel.setText(R.string.endgame_textP1 + score + R.string.endgame_textP2 + gameTime + R.string.endgame_textP3);
第一行运行良好,但第二行给出了此错误(该程序与第二行评论一起使用):
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.web.mathtaketwo/com.web.mathtaketwo.EndGame}: android.content.res.Resources$NotFoundException: String resource ID #0x7d1500be
我做错了什么,阻止了该字符串工作?是因为我试图在1行中使用多个字符串与变量结合使用吗?为什么另一个字符串可以很好地加载?
注意:正在设置的两个对象是TextView
'S:
TextView endInfoLabel = (TextView)findViewById(R.id.endInfoLabel);
TextView endLevelLabel = (TextView)findViewById(R.id.endLevelLabel);
好吧,基本上问题是R.string.xxx
仅返回字符串的ID。
当我尝试将ID(整数)插入我的字符串时,这会导致许多问题。
我应该做的是使用getString()
函数,该功能在指定的ID处返回字符串:
getString(R.string.xxxx)
如果我使用getString()
更改代码:
endLevelLabel.setText(getString(R.string.level_reached_label) + (level));
endInfoLabel.setText(getString(R.string.endgame_textP1) + score + getString(R.string.endgame_textP2) + gameTime + getString(R.string.endgame_textP3));
然后它可以正常工作。有关更多详细信息,请参阅我查看的这些其他主题:
从字符串资源读取值
字符串资源
从资源获取字符串