title: which method will be run before onSelectionChanged when replace text in a EditText
body: <p>I have 2 classes:</p>
  
  <pre><code>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");
      } 
  }
  </code></pre>
  
  <p>and</p>
  
  <pre><code> 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");  
      }   
  }
  </code></pre>
  
  <p>Then I used 2 above classes by this code:</p>
  
  <pre><code>ContentEditText et = new ContentEditText(this);
  et.addTextChangedListener(new EditTextListener());
  </code></pre>
  
  <p>When I run the above code, I replace a text in the edittext by another text, I see <code>onSelectionChanged</code> always is run before <code>onTextChanged</code>, <code>afterTextChanged</code>, <code>beforeTextChanged</code>.</p>
  
  <p>So my question is: are there any methods will be run before <code>onSelectionChanged</code> when replace text in a EditText, and can be overidden ?</p>
  
  <p>Thanks!</p>