mic*_*hen 15 android android-edittext
嗨,有人知道这次事故吗?
仍然困惑如何重现。从 stackTrace 来看,它与电子邮件 EditText 相关。
大多数发生在小米的 Redmi 设备和 100% Android 10 上
全栈跟踪
Editor.java line 3324
Fatal Exception: java.lang.IndexOutOfBoundsException
offset(18) should be less than line limit(17)
android.text.TextLine.measure (TextLine.java:353)
android.text.Layout.getHorizontal (Layout.java:1213)
android.text.Layout.getHorizontal (Layout.java:1190)
android.text.Layout.getPrimaryHorizontal (Layout.java:1160)
android.text.Layout.getPrimaryHorizontal (Layout.java:1149)
android.widget.Editor$ActionPinnedPopupWindow.computeLocalPosition (Editor.java:3324)
android.widget.Editor$PinnedPopupWindow.show (Editor.java:3628)
android.widget.Editor$ActionPinnedPopupWindow.show (Editor.java:3471)
android.widget.Editor$EmailAddPopupWindow.show (Editor.java:4995)
android.widget.Editor$1.run (Editor.java:1528)
android.os.Handler.handleCallback (Handler.java:914)
android.os.Handler.dispatchMessage (Handler.java:100)
android.os.Looper.loop (Looper.java:225)
android.app.ActivityThread.main (ActivityThread.java:7563)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:539)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:994)
Run Code Online (Sandbox Code Playgroud)
offset(X) should be less than line limit(Y)
Run Code Online (Sandbox Code Playgroud)
我在 Android 12+ 中遇到了类似的错误EditText。当由于某种原因EditText.getText().length()(在上面的错误中称为Y)与复制粘贴文本的实际长度(在上面的错误中称为X )不匹配时,就会发生这种情况。
我们的解决方法是扩展EditText然后手动调用setText("", TextView.BufferType.EDITABLE)(在我们的例子中,在 中onTextContextMenuItem),因为它似乎用实际文本长度更正了预期文本长度。