我有2个班级:
public class ContentEditText extends EditText {
public ContentEditText(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
public ContentEditText(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public ContentEditText(Context context)
{
super(context);
}
@Override
protected void onSelectionChanged(int selStart, int selEnd)
{
Log.e(TAG, "on selectoin changed");
}
}
和
public class EditTextListener implements TextWatcher {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
Log.e(TAG, "on text changed");
}
@Override
public void afterTextChanged(Editable s)
{
Log.e(TAG, "on text changed");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
Log.e(TAG, "on text changed");
}
}
然后我通过以下代码使用了上面的两个类:
ContentEditText et = new ContentEditText(this);
et.addTextChangedListener(new EditTextListener());
当我运行上面的代码时,我用另一个文本替换了edittext中的文本,我看到onSelectionChanged
始终在onTextChanged
,afterTextChanged
,beforeTextChanged
之前运行。
所以我的问题是:在替换EditText中的文本时,是否会在onSelectionChanged
之前运行任何方法,并且可以覆盖?
谢谢!