進(jìn)了2017年之后到現(xiàn)在,我一直都在忙著做一款I(lǐng)M應(yīng)用贡珊,功能和微信最爬、QQ類似。
在開發(fā)和測試的過程中门岔,發(fā)現(xiàn)了幾個可以總結(jié)記錄的東西爱致,今天和大家來分享其中之一。
首先來看一個異常:
java.lang.ArrayIndexOutOfBoundsException: length=125; index=-1
at android.text.StaticLayout.calculateEllipsis(StaticLayout.java:830)
at android.text.StaticLayout.out(StaticLayout.java:749)
at android.text.StaticLayout.generate(StaticLayout.java:453)
at android.text.StaticLayout.<init>(StaticLayout.java:145)
at android.widget.TextView.makeSingleLayout(TextView.java:6298)
at android.widget.TextView.makeNewLayout(TextView.java:6144)
乍看上去寒随,倒是和我這邊沒什么關(guān)系糠悯,都是Android內(nèi)部實現(xiàn)的問題。但是每到這個地方妻往,都會崩潰互艾,100%復(fù)現(xiàn)。這對于實際用戶使用而言不是什么好事讯泣。
于是Google纫普,百度了一圈,發(fā)現(xiàn)了Android系統(tǒng)在某個版本中的“坑”好渠。
具體解決辦法:
之前xml布局中昨稼,對于TextView:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="middle"
android:lines="1"
android:text=""/>
看上去沒有問題,如果要解決上述崩潰問題拳锚,改為:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:text=""/>
即可假栓。
這里參考了:Google Code
上述問題在Android 4.4版本上有所體現(xiàn),其他的版本暫不確定霍掺。