TextInputEditText在魅族手机上引起的NullPointException

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wxz1179503422/article/details/82993280

disign.widget包提供了TextInputLayout挺好用的,一般都是搭配TextInputEditText来实现,错误提示,hint提示这些,使用很方便。
但是在魅族手机上导致了崩溃(机型android 7.0 魅族5),追踪日志是调用 getLineForOffset()抛异常了。

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.text.Layout.getLineForOffset(int)' on a null object reference
   at android.widget.Editor.updateCursorPositionMz(Editor.java:6964)
   at android.widget.Editor.updateCursorsPositions(Editor.java:1760)

从日志中可以看到在魅族手机上是调用updateCursorPositionMz()抛了异常,而我查遍系统Editor源码都没有发现这个方法,说明这应该是魅族修改了系统源码导致。所以只能另谋他法,使用其他控件替换TextInputEditText。我们可以使用AppCompatEditText来替换TextInputEditText来实现,果然测试成功,不崩溃,老铁,没毛病!

stackoverflow上也有人提问 NullPointerException on Meizu devices in Editor.updateCursorPositionMz,感兴趣的可以去看看。


致敬前辈,砥砺前行!

猜你喜欢

转载自blog.csdn.net/wxz1179503422/article/details/82993280