나는 8 개의 프래그먼트를 가지고 있는데, 각 프래그먼트는 레이아웃을 확장하고 TextInputLayout 안에 래핑 된 EditText를 포함합니다. onCreateView에서 아래와 같이 각 조각 몸에 MyTextWatcher를 구현 할 필요도일반적인 TextWatcher 클래스
EditText inputTextFrag1 = (EditText)findViewById(R.id.et_frag1);
inputTextFrag1.addTextChangedListener(new MyTextWatcher(inputTextFrag1));
암을 구현하고있다 :
private class MyTextWatcher implements TextWatcher {
private View view;
public MyTextWatcher(View view) {
this.view = view;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
saveButton.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
saveButton.setClickable(false);
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
saveButton.getBackground().setColorFilter(null);
switch (view.getId()) {
case R.id.et_frag1:
validateName();
break;
}
}
}
경우 validateName();
private boolean validateName() {
if (inputTextFrag1 .getText().toString().trim().isEmpty()) {
mInputLayoutName.setError(getString(R.string.err_msg_name));
requestFocus(inputTextFrag1);
return false;
} else {
mInputLayoutName.setErrorEnabled(false);
}
return true;
}
대신 같은 클래스/메소드 8 번 복제의 각 조각에 의해 호출되는 하나의 MyTextWatcher 어딘가에 클래스와 하나 validateName() 메소드를 가질 수있는 방법이 있나요. 감사합니다
이 방법은 BaseDialogFragment 안에 TextWatcher 클래스를 두는 올바른 방법입니까?
public abstract class BaseDialogFragment extends DialogFragment{
private class MyTextWatcher implements TextWatcher {
private View view;
public MyTextWatcher(View view) {
this.view = view;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
}
}
TextWatcher의 beforeTextChanged 및 afterTextChanged 메소드에는 어떤 논리가 적용됩니까?
@ Geob, 왜 댓글을 달았습니까? –
@ uoɥʇʎPʎzɐɹC- 죄송합니다. 실수를 깨달았습니다. 실행 취소를 시도했지만 시도 할 수 없습니다. – Geob