In my Android application I need to implement a TextWatcher interface to implement onTextChanged. The problem I have is, I want to update the same EditText With some extra string. When I try to do this the program terminates.
final EditText ET = (EditText) findViewById(R.id.editText1);
ET.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
try
{
ET.setText("***"+ s.toString());
ET.setSelection(s.length());
}
catch(Exception e)
{
Log.v("State", e.getMessage());
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
}
});
My program terminates and even I try to catch the exception like in my code still it terminates.
Does anyone have any idea why this happens and how I can achieve this? Thanks.
The content of the
TextViewis uneditable on theonTextChangedevent.Instead, you need to handle the
afterTextChangedevent to be able to make changes to the text.For more thorough explanation see: Android TextWatcher.afterTextChanged vs TextWatcher.onTextChanged
Note: Error
onTextChangedObvioulsy, you are causing an endless loop by continuously changing the text on
afterTextChangedevent.From the ref:
Suggestion 1: if you can, check if the
sis already what you want when the event is triggered.validation) you can maybe use a
synchronizedmethod like in thispost.
Note 2 : Formatting the input as partially hidden with n stars till the last 4 chars ( ****four)
You can use something like this in suggestion 1: