您好我正在关注学习Android的书籍教程,但这本书已经过时了。我得到一个"字符串文字无法翻译"和"不要将文本与setText和#34;连接起来。我想知道更新TextView的正确方法是什么?我认为这是我本来想要做的。
<TextView
android:id="@+id/textScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Score: 999"
android:textSize="36sp"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/textOperator"
android:layout_toStartOf="@+id/textOperator" />
<TextView
android:id="@+id/textLevel"`enter code here`
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Level: 4"
android:textSize="36sp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="11dp"
android:layout_marginEnd="11dp" />
这是Java。
textObjectScore.setText("Score:" + currentScore);
textObjectLevel.setText("Level:" + currentLevel);
答案 0 :(得分:2)
这两者都与翻译有关。
“字符串文字无法翻译”。这是一个警告,告诉您无论用户将手机更改为何种语言,此字符串都将使用英语。对于专业应用程序,您可以在strings.xml中定义字符串并在应用程序中使用该字符串。这允许为手机的语言环境选择字符串,假设您已提供翻译文件。
“不要将文本与setText连接”。用你的母语做这个没有实际问题。问题是,在其他语言中,你所做的事情可能没有语法意义。相反,您应该在strings.xml中定义一个带有输入变量的字符串,并使用getString填充这些变量。
但是为了快速将某些东西放在一起并且不适合国际发布,你很好。
答案 1 :(得分:0)
遵循指南(https://developer.android.com/guide/topics/resources/string-resource.html)。例如,指定与分数相关的字符串,如下所示:
<string name="score">Score: %1$d</string>
并设置如下:
Resources res = getResources();
String text = res.getString(R.string.score, currentScore);
textObjectScore.setText(text);
通过这种方式,您可以翻译字符串,提供复数形式并安全地格式化。