финальная переменная в программировании Android - PullRequest
0 голосов
/ 07 февраля 2012

Это код, который я использую в программировании 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.

Но почему появляется эта ошибка и как я могу ее устранить? Я сталкивался с этим много раз.

Ответы [ 3 ]

2 голосов
/ 07 февраля 2012

Вы должны объявить редактировать текст глобально.Причина этого в том, что в вашем классе деятельности у вас есть метод с именем "onCreate", в котором вы объявили текст редактирования "pass1" и пытаетесь определить его другим предварительно определенным методом "setOnClickListener".Это невозможно.Таким образом, вы должны объявить это глобально или как окончательное.

1 голос
/ 07 февраля 2012

// объявляем ваш editext в глобальном

или

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);
}
});
1 голос
/ 07 февраля 2012

Когда мы используем любую переменную в классе anynomus, тогда мы должны использовать конечную переменную.

Так что используйте

final EditText passq;

, затем используйте его в методе onClick.

...