1 /* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.text; 18 19 /** 20 * When an object of a type is attached to an Editable, its methods will 21 * be called when the text is changed. 22 */ 23 public interface TextWatcher extends NoCopySpan { 24 /** 25 * This method is called to notify you that, within <code>s</code>, 26 * the <code>count</code> characters beginning at <code>start</code> 27 * are about to be replaced by new text with length <code>after</code>. 28 * It is an error to attempt to make changes to <code>s</code> from 29 * this callback. 30 */ 31 public void beforeTextChanged(CharSequence s, int start, 32 int count, int after); 33 /** 34 * This method is called to notify you that, within <code>s</code>, 35 * the <code>count</code> characters beginning at <code>start</code> 36 * have just replaced old text that had length <code>before</code>. 37 * It is an error to attempt to make changes to <code>s</code> from 38 * this callback. 39 */ 40 public void onTextChanged(CharSequence s, int start, int before, int count); 41 42 /** 43 * This method is called to notify you that, somewhere within 44 * <code>s</code>, the text has been changed. 45 * It is legitimate to make further changes to <code>s</code> from 46 * this callback, but be careful not to get yourself into an infinite 47 * loop, because any changes you make will cause this method to be 48 * called again recursively. 49 * (You are not told where the change took place because other 50 * afterTextChanged() methods may already have made other changes 51 * and invalidated the offsets. But if you need to know here, 52 * you can use {@link Spannable#setSpan} in {@link #onTextChanged} 53 * to mark your place and then look up from here where the span 54 * ended up. 55 */ 56 public void afterTextChanged(Editable s); 57 } 58