Answers:
这些事件按以下顺序调用:
beforeTextChanged(CharSequence s,int start,int count,int after)。
这意味着这些字符将被一些新文本替换。文本不可编辑。
使用:当您需要查看将要更改的旧文本时。
onTextChanged(CharSequence s,int start,int before,int count)。
进行了更改,某些字符刚刚被替换。文本不可编辑。
使用:当您需要查看文本中的哪些字符是新字符时。
afterTextChanged(Editable s)。
与上面相同,但是现在文本是可编辑的。
使用:当您需要查看并可能编辑新文本时。
如果我只是在听的更改EditText
,则根本不需要使用前两种方法。我只会在第三种方法中收到新值,并在需要时更正新文本。但是,如果必须跟踪发生在值上的确切更改,则可以使用前两种方法。如果在聆听更改后还需要编辑文本,则可以使用第三种方法。
公共无效afterTextChanged(Editable s)
调用此方法来通知您,
s
文本中的某处已更改。s
从此回调中进行进一步更改是合理的,但请注意不要陷入无限循环,因为您进行的任何更改都将导致递归再次调用此方法。(你是不是说当变化发生,因为其他afterTextChanged()方法可能已经做了修改和无效的偏移量。但是,如果你需要知道这里,你可以使用setSpan(Object, int, int, int)
在onTextChanged(CharSequence, int, int, int)
标记你的地方,然后从这里那里仰望跨度结束了。
public void beforeTextChanged(CharSequence s,int start,int count,int after)
调用此方法是为了通知您,在其中
s
,以count
开头的字符start
将被具有length的新文本替换after
。尝试s
对此回调进行更改是错误的。
public void onTextChanged(CharSequence s,int start,int before,int count)
调用此方法是为了通知您,在其中
s
,以count
开头的字符start
刚刚替换了具有length的旧文本before
。尝试s
对此回调进行更改是错误的。
Android Textwatcher
是一种在输入字段的文本更改时调用的触发器。
afterTextChanged (Editable s)
-更改文本后将调用此方法。因为您所做的任何更改都将导致递归再次调用此方法,因此您必须注意此处执行操作,否则可能导致无限循环。
onTextChanged (CharSequence s, int start, int before, int count)
-调用此方法来通知您,在s内,从start开始的计数字符刚刚替换了以前具有长度的旧文本。尝试通过此回调对进行更改是错误的。