我的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
&#39; s:
TextView endInfoLabel = (TextView)findViewById(R.id.endInfoLabel);
TextView endLevelLabel = (TextView)findViewById(R.id.endLevelLabel);
答案 0 :(得分:0)
好的基本上问题是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));
然后它正常工作。有关详细信息,请参阅我查看的其他主题: