我在Google Play控制台中收到了此崩溃报告,我自己从未体验过,也无法重现。
java.lang.IllegalArgumentException:
at android.text.method.WordIterator.checkOffsetIsValid (WordIterator.java:380)
at android.text.method.WordIterator.isBoundary (WordIterator.java:101)
at android.widget.Editor$SelectionStartHandleView.positionAtCursorOffset (Editor.java:4300)
at android.widget.Editor$HandleView.updatePosition (Editor.java:3736)
at android.widget.Editor$PositionListener.onPreDraw (Editor.java:2513)
at android.view.ViewTreeObserver.dispatchOnPreDraw (ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2417)
at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1321)
at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:6708)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:894)
at android.view.Choreographer.doCallbacks (Choreographer.java:696)
at android.view.Choreographer.doFrame (Choreographer.java:631)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:880)
at android.os.Handler.handleCallback (Handler.java:815)
at android.os.Handler.dispatchMessage (Handler.java:104)
at android.os.Looper.loop (Looper.java:207)
at android.app.ActivityThread.main (ActivityThread.java:5728)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:679)
崩溃报告没有提到导致崩溃的类。我最好的猜测是关注自定义TextView
。
private void customTextView(TextView view) {
SpannableStringBuilder spanTxt = new SpannableStringBuilder(
Html.fromHtml(definition[0]));
spanTxt.append("\n\nExample");
spanTxt.setSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
showAlert();
}
}, spanTxt.length() -"Example".length(), spanTxt.length(), 0);
view.setMovementMethod(LinkMovementMethod.getInstance());
view.setText(spanTxt, TextView.BufferType.SPANNABLE);
}
我的自定义TextView
是否有任何问题?
答案 0 :(得分:2)
我已删除 Html.fromHtml(定义[0])和 \ n \ n 。然后它运作良好。如果这两件事即将到来,请测试这两件事。
private void customTextView(TextView view) {
SpannableStringBuilder spanTxt = new SpannableStringBuilder("Testing");
spanTxt.append("Example");
spanTxt.setSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
Log.e("tag","show click");
}
}, spanTxt.length() -"Example".length(), spanTxt.length(), 0);
view.setMovementMethod(LinkMovementMethod.getInstance());
view.setText(spanTxt, TextView.BufferType.SPANNABLE);
}
如果没有,请交叉检查您的文本。这一个 Html.fromHtml(定义[0])。不确定为什么使用 \ n \ n 它会转到下一行。
检查这两件事。其他人工作得很好。
感谢。
答案 1 :(得分:2)
例外是指AOSP中的this line。 我想你的代码中有这一行:
"\n\nExample"
正在创建一个负数或其他无效的偏移值(可能是因为您正在追加SELECT
satker.kode_satker,GROUP_CONCAT(DISTINCT(data.map) ,'-',value SEPARATOR '\n') as newvalue
FROM satker
left join data on data.kode_satker=satker.kode_satker
GROUP BY data.kode_satker
?有没有办法可以在资源字符串中嵌入该示例字符串?
答案 2 :(得分:2)
由于并非所有代码都在此处共享,因此对我而言,实际问题并不明显。异常似乎是由Choreographer中可选择的TextView中的光标位置超出范围引起的。从WordIterator.java
源代码我看到:
private void checkOffsetIsValid(int offset) {
if (!(mStart <= offset && offset <= mEnd)) {
throw new IllegalArgumentException("Invalid offset: " + (offset) +
". Valid range is [" + mStart + ", " + mEnd + "]");
}
}
我个人没有遇到过这个问题,但是在调用setText时Android会清除TextView选项的问题,正如本文IllegalArgumentException while selecting text in Android TextView
中解释的那样(有一些解决方法) 祝你好运!答案 3 :(得分:0)
spantext代码没有问题。如果删除变量 - Html.fromHtml(definition[0])
Html.fromHtml(definition[0])