1. 程式人生 > >TextInputEditText在魅族手機上引起的NullPointException

TextInputEditText在魅族手機上引起的NullPointException

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,感興趣的可以去看看。


致敬前輩,砥礪前行!