Ich habe 8 Fragmente, die jeweils ein Layout mit einem EditText auffüllen, der in einem TextInputLayout eingeschlossen ist. Im onCreateView, ist die UmsetzungGemeinsame TextWatcher-Klasse
EditText inputTextFrag1 = (EditText)findViewById(R.id.et_frag1);
inputTextFrag1.addTextChangedListener(new MyTextWatcher(inputTextFrag1));
Am auch unter MyTextWatcher Klasse in jedem Fragment Körper zu implementieren, mit:
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;
}
}
}
Wo 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;
}
Gibt es eine Möglichkeit nur eine MyTextWatcher Klasse zu haben irgendwo und ein validateName() -Methode von jedem Fragment aufgerufen werden anstelle der gleichen Klasse/Methode 8 mal zu duplizieren. Danke
Ist dies der richtige Weg, um die TextWatcher-Klasse in einem BaseDialogFragment zu platzieren?
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) {
}
}
}
Welche Logik geht in die beforeTextChanged und afterTextChanged Methoden der TextWatcher?
@Geob, warum haben Sie bearbeitet, wenn Sie einen Kommentar abgeben wollten? –
@uoɥʇʎPʎzɐɹC-Sorry, erkannte den Fehler, versuchte zu rückgängig machen, konnte aber nicht – Geob