2012-02-07 7 views
0

これは私がアンドロイドプログラミングでfinal変数

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

を使用していたコードですが、私は常にエラーを取得:私は最終的としてPASS1を宣言

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

た後でも、私が取得次のエラー:

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 –

+0

@Amokrane Chentir:ありがとうリンクのために。 – Ashwin

答えて

2

であなたのeditextを宣言するあなたは、グローバルエディットテキストを宣言しなければなりません。これはあなたのアクティビティクラスに "onCreate"というメソッドがあり、 "pass1"という編集テキストを宣言し、別の定義済みメソッド "setOnClickListener"で定義しようとしています。これは不可能です。だからあなたはそれをグローバルに宣言しなければなりません。

1

anynomusクラスで変数を使用する場合、final変数を使用する必要があります。

それではonClickの方法でそれを使用

final EditText passq; 

を使用しています。

+1

オペラは、どうしてそうではないのかを尋ねている。ただ言って。 –

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