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,感兴趣的可以去看看。
致敬前辈,砥砺前行!