Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中,不能引用非最终变量计数器_Java_Android - Fatal编程技术网

Java 在Android中,不能引用非最终变量计数器

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

无法在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方法中更改其值


谢谢。

因为@Raghunandan提到了这个链接 它描述了你需要的一切。很清楚地描述这一点

匿名类无法访问其封闭类中的局部变量 未声明为最终或有效最终的范围


基本上,click listener是一个匿名类。这里不能使用局部非最终变量。如果要更改变量范围,必须将其作为类变量移动。我想这对你来说是有意义的

把头转向右侧,在
相关的
下查看。这不是完全重复的,因为在我的例子中,我仍然想在OnClick方法中更改有问题的变量的值。@user2938543将其设置为final或声明为实例变量并读取。是的,我只是将变量移出了任何方法,它就起作用了。