The most correct way to do that is something like that:
String text="Some Text"; editText.getText().insert(editText.getCursorPosition(), text);
Why? Because it’s will return to us original Editable source:
public class EditText extends TextView {
//....
@Override
public Editable getText() {
return (Editable) super.getText();
}
//....
}
public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {
//...
@ViewDebug.CapturedViewProperty
public CharSequence getText() {
return mText;
}
//...
}
All other ways, which include replacement of old text with setText — is not recommended.