变量需要声明为final
Variable needs to be declared final
我试图在每次单击按钮时让分数变量增加一。问题是我必须在 onClick 之外声明 score 变量,否则它将始终设置为 0。另外,我无法声明变量 final,因为我正在修改变量。这是代码。
int score = 0;
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
score++;
scoreLabel.setText(String.valueOf(score));
问题是 var score 在方法中的作用域,移动它并将 score 声明为 class 变量。
理想的解决方案是使变量 static
成为外部 class 的成员。使其成为 static
意味着 class 的所有对象将共享一个变量副本,并且该值将在任何地方保持不变。
在外部 class 中声明 static int score;
。
如果不想使用静态变量,可以在外层class声明分数(private int score;),然后在构造函数中初始化。这将为它提供正确的访问范围!
您可以使用 MutableInt,顾名思义,它是一个可变整数。这个 class 在 apache commons 中提供。
这样你就可以保持变量局部和最终。
希望对您有所帮助
我试图在每次单击按钮时让分数变量增加一。问题是我必须在 onClick 之外声明 score 变量,否则它将始终设置为 0。另外,我无法声明变量 final,因为我正在修改变量。这是代码。
int score = 0;
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
score++;
scoreLabel.setText(String.valueOf(score));
问题是 var score 在方法中的作用域,移动它并将 score 声明为 class 变量。
理想的解决方案是使变量 static
成为外部 class 的成员。使其成为 static
意味着 class 的所有对象将共享一个变量副本,并且该值将在任何地方保持不变。
在外部 class 中声明 static int score;
。
如果不想使用静态变量,可以在外层class声明分数(private int score;),然后在构造函数中初始化。这将为它提供正确的访问范围!
您可以使用 MutableInt,顾名思义,它是一个可变整数。这个 class 在 apache commons 中提供。 这样你就可以保持变量局部和最终。
希望对您有所帮助