我試圖獲取用戶對EditText所做的修改,無論是插入還是刪除。我使用TextWatcher,但是我沒有得到正確的結果,而且有時候「getChar(start,end)在開始之前已經結束」錯誤。使用TextWatcher在EditText中查找文本更改
editText = (EditText) findViewById(R.id.MyEditText);
editText.addTextChangedListener(new TextWatcher() {
@override
public void afterTextChanged(Editable s){}
@override
public void beforeTextChanged(CharSequence s, int start, int count, int after){
showToast("text removed: " + s.subSequence(start, count));
}
@override
public void onTextChanged(CharSequence s, int start, int before, int count){
showToast("text added: " + s.subSequence(start, count));
}
}
正如你可以看到我用beforeTextChanged
得到多數民衆贊成由用戶刪除任何文本,onTextChanged
插入。請在這裏說明一些情況。謝謝!
編輯:
我似乎弄明白......這是相當愚蠢的:s.subSequence(start, count))
確實應該s.subSequence(start, start+count))
??什麼是'fillData(SEARCH_ORDER,s.toString());'? ''afterTextChanged'中只有'Editable s',所以我沒有看到這個回調是如何幫助的。 ' – Arch1tect
這就是我實現的方法。你只是把你的代碼放在那裏.. –