关于在java类中的方法添加TextChangedListener时的一个报错有关问题
关于在java类中的方法添加TextChangedListener时的一个报错问题
简化一个代码,如下
就是类里面有个方法
public class HomeActivity extends Activity {
private void showSetupPwdDialog() {
et_setup_confirm = (EditText) view.findViewById(R.id.et_setup_confirm);
TextWatcher mWatcher;
mWatcher = new TextWatcher(){...}
et_setup_confirm.addTextChangedListener(mWatcher);
}
}
如果我把et_setup_confirm.addTextChangedListener(mWatcher);放在 TextWatcher mWatcher;和 mWatcher = new TextWatcher(){...}前面就会报错,但是放在如上放在后面就不报错,有点不能理解,java不是编译语言吗?



------解决思路----------------------
第一个图应该是在这个变量还未声明时就使用所以报错:
因为java、c++的方法内部是自上而下顺序执行的
第二个图错误应该是使用了还未赋值的局部变量
如果是全局变量,那么可以不用写=null之类的,因为系统会赋予默认值
但是你那个是局部变量(临时变量)所以要自己主动赋值。
图三就对了,你即在使用前创建了变量,也在使用前赋值了
简化一个代码,如下
就是类里面有个方法
public class HomeActivity extends Activity {
private void showSetupPwdDialog() {
et_setup_confirm = (EditText) view.findViewById(R.id.et_setup_confirm);
TextWatcher mWatcher;
mWatcher = new TextWatcher(){...}
et_setup_confirm.addTextChangedListener(mWatcher);
}
}
如果我把et_setup_confirm.addTextChangedListener(mWatcher);放在 TextWatcher mWatcher;和 mWatcher = new TextWatcher(){...}前面就会报错,但是放在如上放在后面就不报错,有点不能理解,java不是编译语言吗?
------解决思路----------------------
第一个图应该是在这个变量还未声明时就使用所以报错:
因为java、c++的方法内部是自上而下顺序执行的
第二个图错误应该是使用了还未赋值的局部变量
如果是全局变量,那么可以不用写=null之类的,因为系统会赋予默认值
但是你那个是局部变量(临时变量)所以要自己主动赋值。
图三就对了,你即在使用前创建了变量,也在使用前赋值了