今天在三星Galaxy S21Android 12 版本上遇到一个兼容问题。

在代码中调用自定义EditText的setText("*")方法时,报数组越界异常:

java.lang.IndexOutOfBoundsException: charAt: -1 < 0

具体堆栈如下:

找了半天没找出来原因,网上也没找到答案,最后通过追踪源码,发现问题出在TextView检查拼写的方法里。

因为当前场景不需要检查拼写功能,所以把该功能禁用掉,问题就解决了。

解决方案

禁用检查拼写功能

editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);