android编程中的最终变量

时间:2012-02-07 10:02:56

标签: java android final

这是我在android编程中使用的代码

EditText pass1,pass2;
Button register=(Button) findViewById(R.id.register);
register.setOnCllickListener(new OnClickListener(){
public void onClick(View v)
{
 passq=(EditText) findViewById(R.id.password_fill);
}
});

但我总是收到错误:

Cannot refer to non-final variable inside an inner class defined in different method.

即使我将pass1声明为final,我也会收到以下错误:

The final local variable pass1 cannot be assigned since it is defined in an enclosing type.

但为什么会出现此错误,如何将其删除?我已经遇到过很多次了。

3 个答案:

答案 0 :(得分:2)

您必须全局声明编辑文本。原因是在您的活动类中有一个名为“onCreate”的方法,您在其中声明了编辑文本“pass1”,并尝试使用另一个预定义方法“setOnClickListener”进行定义。这是不可能的。所以你必须在全球或最终宣布它。

答案 1 :(得分:1)

当我们在匿名类中使用任何变量时,我们必须使用最终变量。

所以使用

final EditText passq;

然后在onClick方法中使用它。

答案 2 :(得分:1)

//在全局

中声明您的edittext

final EditText pass1;
Button register=(Button) findViewById(R.id.register);
register.setOnCllickListener(new OnClickListener(){
public void onClick(View v)
{
 pass1=(EditText) findViewById(R.id.password_fill);
or
EditText pass2=(EditText) findViewById(R.id.password_fill);
}
});