我正在开发一个应用程序,我有在代码的某些部分
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));