TextInputEditText在魅族手機上引起的NullPointException
阿新 • • 發佈:2018-12-07
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,感興趣的可以去看看。
致敬前輩,砥礪前行!