我在EditText上有一台TextWatcher。在beforeTextChanged中,我发现EditText值已经被更改。下面是一小段代码:
@Override
public void beforeTextChanged (CharSequence s, int start, int lengthBefore, int lengthAfter)
{
// restoreValue = text.getText().toString();
String restoreValue = s.toString();
System.out.println ("restore |" + restoreValue + "|");
}在此函数中,调试输出显示修改后的字符串,而不是EditText的原始值。无论我是从"text“(即EditText小部件)还是从"s”获取值,都是一样的。
有没有人有可能的原因?
发布于 2013-02-10 01:02:52
事实证明答案很简单。Android试图变得更聪明,它认为你的插入应该是一个单词,并添加一个空格来将其与其他文本分开。因此,它首先插入空格(可能是两个空格-在所选区域的两端各一个),然后插入粘贴缓冲区文本。
这些操作中的每一个都会导致对beforeTextChanged的单独调用。onTextChanged和afterTextChanged也是如此。
因此,对于粘贴操作,最多可以获得三组回调。
https://stackoverflow.com/questions/14784233
复制相似问题