Android TextView afterTextChanged调用意外的可编辑

时间:2017-07-17 11:26:08

标签: android

InputMethodManager

https://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html

中文输入法。当我输入“西安市”时,我希望日志如下。

afterTextChanged 西
afterTextChanged 西安
afterTextChanged 西安市

但实际日志如下。

 afterTextChanged x
 afterTextChanged xi
 afterTextChanged 西
 afterTextChanged a
 afterTextChanged an
 afterTextChanged 安
 ....

如果我使用'快速拨号'样式输入中文单词。 日志变得更糟!!!

E: afterTextChanged() t
E: afterTextChanged() t'x
E: afterTextChanged() t'z'z
E: afterTextChanged() t'y'y's
E: afterTextChanged() 挺有意思

代码如下。

@Override
public void afterTextChanged(Editable s) {
   Log.i(TAG, "afterTextChanged "+s.toString());
}

enter image description here

1 个答案:

答案 0 :(得分:0)

您使用的是Android设备模拟器而不是真正的Android手机吗?我使用手机运行相同的代码。但是日志的出现并不像您预期​​或描述的那样。

我的手机是Nexus 6p,Android 7.1.1,默认输入法。

enter image description here

直到西安市被选中完成后,才将“西安市”这个词放入EditText。所以,就我而言,afterTextChanged只在西安市被选中时才发生过一次。