I am using TextWatcher
and I am unable to detect Backspace key in TextWatcher.afterTextChange
event. I also want to clear textView
on some condition in textWatcher
event.
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
// I want to detect backspace key here
}
A KeyListener
can fulfil both of your conditions.
mEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_DEL){
//on backspace
}
return false
}
});
Similarly inside the onKey()
, you can put multiple check statements to check for the condition, when you would want to clear the textView
.
EDIT : As @RankoR was kind enough to point out, please bear in mind that onKeyListener()
works only for the hardware keyboards and not the soft keyboards.
To detect a backspace in TextWatcher
, you can check the variable count that is passed into the onTextChange
function (count will be 0 if a backspace was entered), like this:
@Override
public void onTextChanged(CharSequence cs, int start, int before, int count) {
if (react) {
if (count == 0) {
//a backspace was entered
}
//clear edittext
if(/*condition*/) {
react = false;
setText("");
react = true;
}
}
}
The react boolean
is needed for the setText
() function otherwise it becomes recursive. Hope this helps!
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