我正在尝试制作一个简单的应用,该应用在显示时增加了3个,只是混淆了一部分,这在我的手机中不起作用并显示了一些错误。
public void addThreeToTeamA(View view) {
ScoreOfTeamA = ScoreOfTeamA + 3;
displayScore(ScoreOfTeamA);
}
public void displayScore(int score){
TextView text = findViewById(R.id.display_TeamA_score);
text.setText(score);
这很好用
public void addThreeToTeamA(View view) {
ScoreOfTeamA = ScoreOfTeamA + 3;
displayScore(ScoreOfTeamA);
}
public void displayScore(int score){
TextView text = findViewById(R.id.display_TeamA_score);
text.setText("" + score);
“”在最后一行中做什么,以使应用正常工作?
这是xml文件
<TextView
android:id="@+id/display_TeamA_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/_0"
android:textSize="48sp"
android:textAlignment="center" />
<Button
android:onClick="addThreeToTeamA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/AddThree"
android:layout_marginLeft="14dp"
android:layout_marginRight="14dp"
android:textSize="18sp"
android:textAlignment="center" />
这不是完整的代码,它只是重要的部分。
答案 0 :(得分:4)
score
的类型为int
。您要使用的setText
方法期望使用char[]
类型的东西,即字符串。请注意,另一个setText
方法的确希望有一个整数,该整数用于通过其ID查找资源。这就是使用setText(score)
时不会出现错误的原因。
知道这一点:
text.setText(score);
上,如果将score
转换为字符串,它将起作用(例如,使用Integer.toString(score)
)。 text.setText("" + score);
上,您已经有""
字符串,并且Java知道您正在尝试将整数添加到字符串,因此它返回一个字符串。但是,此版本效率不高,因为每次将字符串连接到字符串时,您都在创建一个新字符串(这就是人们使用StringBuilder
的原因)。长话短说,只需将score
转换为字符串即可。
答案 1 :(得分:4)
您使用的是setText()
的两个不同版本:
第一个使用资源ID 。 TextView将尝试将资源作为字符串加载。由于您提供的是任意整数,因此可能会收到“找不到资源”异常。
第二个字符采用CharSequence,并将仅显示该确切文本。
将参数更改为"" + score
将创建一个包含适当字符以显示score
值的字符串。