If editText1 is focus and editTextWrapper already shows error and I move frocus away(e.g to editText2) errorMessage will blink a bit ( as focusListener withl enable it again) and there will be small animation glitch.
Is there a way to check if TextInputLayout error is enabled (or other way to know that error is displayed, except intoducing external veriable to my class?
public class NoteCreateFragment extends Fragment{
@Bind(R.id.edit_text1) EditText editText1;
@Bind(R.id.edit_text2) EditText editText2;
@Bind(R.id.edit_text_wrapper) TextInputLayout editTextWrapper;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState
){
View view = inflater.inflate(R.layout.fragment_note_create, container, false);
ButterKnife.bind(this, view);
editText1.addTextChangedListener(textWatcher);
editText1.setOnFocusChangeListener(focusListener);
return view;
}
@Override
public void onDestroyView(){
super.onDestroyView();
ButterKnife.unbind(this);
}
private void createTask(){
String text1 = editText1.getText().toString();
if(text1.isEmpty()){
editTextWrapper.setError("Please enter task name");
}
}
private TextWatcher textWatcher = new 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){
if(s.length() > 3){ editTextWrapper.setErrorEnabled(false); }
}
@Override
public void afterTextChanged(Editable s){
}
};
private View.OnFocusChangeListener focusListener = new View.OnFocusChangeListener(){
@Override
public void onFocusChange(View v, boolean hasFocus){
if(!hasFocus && editText1.getText().toString().length() < 1){
editTextWrapper.setErrorEnabled(true);
editTextWrapper.setError("Please enter task name");
Log.e("TextInputLayout", editTextWrapper.getEditText().getError().toString());
}
}
};
}
dont change setErrorEnabled() in runtime, to show/hide error. Use setError(message) to show error and setError(null) to hide error. Thus
if(!TextUtils.isEmpty(textInputLayout.getError())
return true if error is vissble, flase otherwise
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With