ユーザーが EditText に対して行った変更 (挿入または削除) を取得しようとしています。TextWatcher を使用していますが、正しい結果が得られません。さらに、「getChar(start, end) has end before start」というエラーが発生することもあります。
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
挿入するために使用します。ここで光を当ててください。ありがとう!
API はここにあります: http://developer.android.com/reference/android/text/TextWatcher.html#afterTextChanged(android.text.Editable)
編集:
私はそれを理解しているようです...それはかなりばかげています:s.subSequence(start, count))
本当にそうあるべきですs.subSequence(start, start+count))