Java 在Android中,不能引用非最终变量计数器
无法在public void onClick(View v)方法中引用计数器变量,因为它是在不同的方法中定义的。以下是相关代码Java 在Android中,不能引用非最终变量计数器,java,android,Java,Android,无法在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.setTe
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方法中更改其值
谢谢。因为@Raghunandan提到了这个链接 它描述了你需要的一切。很清楚地描述这一点 匿名类无法访问其封闭类中的局部变量 未声明为最终或有效最终的范围
基本上,click listener是一个匿名类。这里不能使用局部非最终变量。如果要更改变量范围,必须将其作为类变量移动。我想这对你来说是有意义的 把头转向右侧,在
相关的下查看。这不是完全重复的,因为在我的例子中,我仍然想在OnClick方法中更改有问题的变量的值。@user2938543将其设置为final或声明为实例变量并读取。是的,我只是将变量移出了任何方法,它就起作用了。