为什么字符串资源显示为整数?



我正在开发一个应用程序,我有在代码的某些部分

textview.setText(R.string.resource1 + progress + R.string.resource2);

但是当我运行应用程序时,不是显示字符串作为单词(这些是在某些语言中翻译的单词)应用程序显示类似于textview

的东西
2131755168 106(this is okay, is the variable progress) 62131755102

这些数字应该是英文单词

您正在获得该结果,因为您使用混合类型连接值,R.string.resource1是用于检索文本的int查找值(它不是文本本身)。当进行连接时,Java只会将这些int值'toString'。

你有两个选择…

选项1(推荐):

定义一个使用格式参数的字符串资源,然后传入进度。它在调用现场更干净,比下面的选项2更灵活。

<string name="progress_label">Before %1$d After</string>
textView.setText(getString(R.string.progress_label, progress));

选项2:

这是不太理想的,因为它不允许您根据翻译调整措辞(如果需要)。

<string name="progress_before">Before</string>
<string name="progress_after">After</string>
String before = getString(R.string.progress_before);
String after = getString(R.string.progress_after);
textView.setText(String.format("%1$s %2$d %3$s", before, progress, after));

最新更新