How can I change my edittext after changed? Method works but edittext not change. Can I use setview in aftertextchanged? Alertdialog in fragment so it is difficult and I used this app crashed
AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext());
builder.setTitle("Lütfen tutar girin");
final EditText input = new EditText(this.getContext());
input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
builder.setView(input);
input.addTextChangedListener(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) {
}
@Override
public void afterTextChanged(Editable s) {
try {
if(s.length()>=4) {
s = new SpannableStringBuilder(Formatter(s.toString()));
}
}catch (NumberFormatException e){
}
}
});
builder.setPositiveButton("OK", (dialog, which) -> {
String pin = input.getText().toString();
if (!pin.isEmpty()) {
getFragmentManager().beginTransaction()
.replace(R.id.container, new CardFragment((int) (Float.parseFloat(pin) * 100), operation))
.addToBackStack(null).commit();
} else {
showMessage("Lütfen Tutar Giriniz");
}
});
builder.show();
It's change the text field. Formatter:
public String Formatter(String rut) {
String mString;
if(rut.length()==4){
mString = rut.substring(0,4)+",";
}else if(rut.length()==5){
mString = rut.substring(0,4)+","+rut.substring(3,4);
}else
mString = rut.substring(0,4)+","+rut.substring(3,5);
return mString;
}
I solved with this:
@Override
public void afterTextChanged(Editable s) {
try {
input.removeTextChangedListener(this);
if(s.length()>4){
s = new SpannableStringBuilder( Formatter(s.toString()));
input.setText(s);
}
input.addTextChangedListener(this);
} catch (Exception ex) {
ex.printStackTrace();
input.addTextChangedListener(this);
}