2012-02-07 35 views
0

这是我正在使用的Android程序代码在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作为最终,我得到出现以下错误:

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

但是,为什么会出现此错误,我该如何删除它?我一直遇到过很多次。

+1

这是一个Java问题。重复:http://stackoverflow.com/questions/1299837/cannot-refer-to-a-non-final-variable-inside-an-inner-class-defined-in-a-differen – 2012-02-07 10:05:42

+0

@Amokrane Chentir:谢谢为链接。 – Ashwin 2012-02-07 11:24:34

回答

2

您editext你必须在全球范围内宣布编辑文本。原因是在你的activity类中你有一个叫做“onCreate”的方法,在这里你声明了编辑文本“pass1”,并且你试图用另一个预先定义的方法“setOnClickListener”来定义它。这不可能。所以你必须在全球或最终宣布。

1

当我们在anynomus类中使用任何变量时,我们必须使用final变量。

所以使用

final EditText passq; 

那么的onClick方法使用它。

+1

该op是问为什么,而不是如何。只是说。 – 2012-02-07 10:10:28

1

//声明在全球

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); 
} 
});