在Android中,不能参考非最终的变量计数器

时间:2014-03-16 16:24:34

标签: 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.setText("Clicked " + 0 + " times.");

    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            counter++;
            message.setText("Clicked " + counter + " times.");

        }
    });

对于如何解决这个问题有什么想法吗?

我不想将计数器声明为最终变量的原因是因为我仍想在Onclick方法中更改其值。

谢谢。

1 个答案:

答案 0 :(得分:0)

@Raghunandan提到链接Accessing Local Variables of the Enclosing Scope, and Declaring and Accessing Members of the Anonymous Class 它描述了你需要的一切。它清楚地描述了

  

匿名类无法访问其封闭的局部变量   未被宣布为最终或有效最终的范围。

基本上,click listener是一个匿名类。您不能在此处使用本地非最终变量。如果要更改变量范围,则必须将其作为类变量移动。我想这对你有意义。