我有一份崩溃报告指出,IndexOutOfBoundsException但我不知道是什么原因导致的,因为堆栈中没有我的代码中的任何内容。这是堆栈:
Fatal Exception: java.lang.IndexOutOfBoundsException: setSpan (34 ... 48) ends beyond length 34
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1265)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:684)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:677)
at android.widget.Editor$SuggestionsPopupWindow.updateSuggestions(Editor.java:3980)
at android.widget.Editor$SuggestionsPopupWindow.show(Editor.java:3833)
at android.widget.Editor.replace(Editor.java:435)
at android.widget.Editor$3.run(Editor.java:2359)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Run Code Online (Sandbox Code Playgroud)
我发现的唯一与我的问题类似的事情是这个,但那家伙无法解决它。
我怎样才能知道是什么原因造成的,以便寻找解决方案?
编辑
好的,我发现在我的大型代码的多个部分中正在使用此函数:
public static Spannable spannabletext(String message, int start, int end, String font_family, Typeface font) {
Spannable spannable = new SpannableString(Html.fromHtml(message));
spannable.setSpan(new CustomTypefaceSpan(font_family, font),
start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
return spannable;
}
Run Code Online (Sandbox Code Playgroud)
所以我猜测在某些时候这就是问题的根源。但由于我不想花几个小时试图猜测哪个文本和哪种语言(我的应用程序有 8 种不同的语言)是生成此崩溃的,所以我要等到它再次发生,但这次我添加了一些Crashlytics行,以便我可以从崩溃报告中获取更多信息。所以我的spannabletext功能现在是这样的:
public static Spannable spannabletext(String message, int start, int end, String font_family, Typeface font, Activity activity) {
Crashlytics.setString("activity", activity.getLocalClassName());
Crashlytics.setString("message", message);
Crashlytics.setInt("start", start);
Crashlytics.setInt("end", end);
Spannable spannable = new SpannableString(Html.fromHtml(message));
spannable.setSpan(new CustomTypefaceSpan(font_family, font),
start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
return spannable;
}
Run Code Online (Sandbox Code Playgroud)
我会及时向大家发布..
该错误不是由您的代码引起的。查看堆栈:at android.widget.Editor$SuggestionsPopupWindow.updateSuggestions(Editor.java:3980)长按文本以显示 PopWindow 时发生的情况。所以这是一个框架错误,不是你的。
这个答案更好:EditText crashing on clearing text
问题是“updateSuggestions”在您更改 EditText 中的文本后尝试设置Span。所以你需要在编辑器修改EditText后进行文本更改。只需将您的代码放入 view.post 中即可
mEditText.post {
mEditText.setText("your text")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |