原理:
先移除监听在进行操作,可确保不会崩溃
方法一:
implements View.OnFocusChangeListener, View.OnClickListener, TextWatcher
private EditText editText;
private int id;
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.editText1://第一个editText
case R.id.editText2://第二个editText
if (editText != null)
editText.removeTextChangedListener(this);
editText = (EditText) v;
id = v.getId();
editText.addTextChangedListener(this);
break;
default:
break;
}
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
if (editText != null)
editText.removeTextChangedListener(this);
editText = (EditText) v;
id = v.getId();
editText.addTextChangedListener(this);
}
}
//在监听事件中可以用*
swich(id){
case R.id.editText1:
// TODO 对editText1操作
break;
case R.id.editText2:
// TODO 对editText2操作
break;
default:
break;
}
方法二:
@Override
protected void initView(View view) {
super.initView(view);
TextChange textChange=new TextChange();
//添加edittext的输入监听
et_input_business_psd.addTextChangedListener(textChange);
et_again_input_business_psd.addTextChangedListener(textChange);
}
//设置edittext的输入监听
class TextChange implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (et_input_business_psd.length()>0&&et_again_input_business_psd.length()>0){
tv_confirm.setBackgroundColor(getResources().getColor(R.color.titleColorSelected));
}else{
tv_confirm.setBackgroundColor(getResources().getColor(R.color.black_light));
}
}
}