如何正确更新textView?

时间:2017-05-04 17:19:10

标签: java android xml

您好我正在关注学习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);

2 个答案:

答案 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);

通过这种方式,您可以翻译字符串,提供复数形式并安全地格式化。