Android Can';t在未设置为final的情况下初始化变量

Android Can';t在未设置为final的情况下初始化变量,android,global-variables,Android,Global Variables,所以这让我有点疯狂。我所要做的就是给一个字符设置一个变量 String optr = "+"; Add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub optr = "+"; // Here I am try

所以这让我有点疯狂。我所要做的就是给一个字符设置一个变量

String optr = "+";

    Add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            optr = "+";  // Here I am trying to initilize and I get errors
        }
    });
但我会遇到一些错误,比如

Cannot refer to a non-final variable optr inside an inner class defined in a different method
当我将变量设置为final时,会出现另一个错误

The final local variable optr cannot be assigned, since it is defined in an enclosing type

所以我真的不确定在这里该做什么。

如果您在内部类中使用它,那么它必须是最终的

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

您可以将其声明为实例变量,也可以将其设置为
final
。如果你把它设为final,它是k,但是你在内部类中重新赋值,因此你得到了

The final local variable optr cannot be assigned, since it is defined in an enclosing type

因此,在
onCreate
内部
Activity
类之前声明它,比如
String optr

出现此错误是因为optr被声明为局部变量而不是实例

无法在其他方法中定义的内部类中引用非最终变量optr

同样,当您将局部变量声明为final时,您可以从匿名类访问该变量,但尽管它是final,因此您不能更改optr的值