在public void onClick(View v)方法中无法引用计数器变量,因为它是以不同的方法定义的。以下是相关代码。
Button button;
final TextView message;
int counter = 0;
button = (Button) findViewById(R.id.button5);
message = (TextView) findViewById(R.id.tv5);
message.setText("Clicked " + 0 + " times.");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter++;
message.setText("Clicked " + counter + " times.");
}
});
对于如何解决这个问题有什么想法吗?
我不想将计数器声明为最终变量的原因是因为我仍想在Onclick方法中更改其值。
谢谢。
答案 0 :(得分:0)
@Raghunandan提到链接Accessing Local Variables of the Enclosing Scope, and Declaring and Accessing Members of the Anonymous Class 它描述了你需要的一切。它清楚地描述了
匿名类无法访问其封闭的局部变量 未被宣布为最终或有效最终的范围。
基本上,click listener是一个匿名类。您不能在此处使用本地非最终变量。如果要更改变量范围,则必须将其作为类变量移动。我想这对你有意义。