java - 是什么导致“AutoCompleteTextViews”出现“setSpan”错误?
问题描述
问题:在下面的调试报告中,我想我理解问题是setSpan
从负数与 0 开始。但我不知道这意味着什么,或者我是否可以修复它,因为它没有追溯到任何特定的布局、类或我创建的功能?我在此活动中没有任何代码处理setSpan
?
似乎正在发生的事情:它似乎发生AutoCompleteTextViews
在我的 AddNote
活动中。具有讽刺意味的是,这个EditNote
活动在布局和功能上实际上是活动的复制品,并且不会与EditNote
. 然而,一个不同之处在于AddNote
它们的活动setOnFocusChangedListener
。
在某种程度上,它也显得随机。有时我只需单击AutoCompleteTextView
它就会触发此错误。其他时候,在选择或输入数据后,焦点发生变化。
预期: AutoCompleteTextViews
是带有选择或添加新内容的选项的下拉列表。我几个月来一直在从事这项活动,没有任何问题,然后这才开始发生。
下面,调试没有识别出我的任何类或资源触发了这个问题,我只是根据上面的一些细节似乎正在发生。这是我不确定是否可以更改以进行修复并想联系的原因之一。
AutoCompleteTextView 对象设置
ArrayAdapter<String> summaryAdapter = DBQueryTools.captureSummaries(this);
summary.setThreshold(1);
summary.setAdapter(summaryAdapter);
ArrayAdapter<String> topicsAdapter = DBQueryTools.captureDBTopics(this);
topic.setThreshold(1);
topic.setAdapter(topicsAdapter);
ArrayAdapter<String> acQuestionAdapt = DBQueryTools.captureDBQuestions(this);
question.setThreshold(1);
question.setAdapter(acQuestionAdapt);
适配器代码
public static ArrayAdapter<String> captureDBTopics(Context context){
rdb = ResearchDatabase.getInstance(context, "Apologetic.db");
List<Topics> topics = rdb.getTopicsDao().getTopics();
List<String> orgTopics = new ArrayList<>();
for(Topics t : topics){
orgTopics.add(t.getTopic());
}
return new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, orgTopics);
//topic.setAdapter(topicsAdapter);
}
public static ArrayAdapter<String> captureDBQuestions(Context context){
rdb = ResearchDatabase.getInstance(context, "Apologetic.db");
List<Questions> questions = rdb.getQuestionsDao().getQuestions();
List<String> orgQuestions = new ArrayList<>();
for(Questions q : questions){
orgQuestions.add(q.getQuestion());
}
return new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, orgQuestions);
//question.setAdapter(acQuestionAdapt);
}
public static ArrayAdapter<String> captureSummaries(Context context){
rdb = ResearchDatabase.getInstance(context, "Apologetic.db");
List<Comments> summaries = rdb.getCommentsDao().getComments();
List<String> orgSummaries = new ArrayList<>();
for(Comments c : summaries){
if(!c.getSummary().isEmpty() && !orgSummaries.contains(c.getSummary().trim()))
orgSummaries.add(c.getSummary());
}
return new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, orgSummaries);
}
调试
E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1326)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:682)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:674)
at android.text.Selection.setSelection(Selection.java:93)
at android.text.Selection.setSelection(Selection.java:77)
at android.text.method.ArrowKeyMovementMethod.onTouchEvent(ArrowKeyMovementMethod.java:291)
at android.widget.TextView.onTouchEvent(TextView.java:10089)
at android.view.View.dispatchTouchEvent(View.java:12513)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:440)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830)
at android.app.Activity.dispatchTouchEvent(Activity.java:3400)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:398)
at android.view.View.dispatchPointerEvent(View.java:12752)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5106)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4909)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4585)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4642)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7092)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7061)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7022)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7195)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:326)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mistywillow.researchdb, PID: 27233
java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1326)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:682)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:674)
at android.text.Selection.setSelection(Selection.java:93)
at android.text.Selection.setSelection(Selection.java:77)
at android.text.method.ArrowKeyMovementMethod.onTouchEvent(ArrowKeyMovementMethod.java:291)
at android.widget.TextView.onTouchEvent(TextView.java:10089)
at android.view.View.dispatchTouchEvent(View.java:12513)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:440)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830)
at android.app.Activity.dispatchTouchEvent(Activity.java:3400)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:398)
at android.view.View.dispatchPointerEvent(View.java:12752)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5106)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4909)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4585)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4642)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7092)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7061)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7022)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7195)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:326)
E/AndroidRuntime: at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
解决方案
这似乎是发布在问题跟踪器上的常见问题。我对以下问题添加了评论,这些评论似乎相似并且已被分配。 https://issuetracker.google.com/issues/119349156
推荐阅读
- sql - 添加辅助 SQL 索引
- angular - ControlValueAccessor:永远不会调用 registerOnChange()
- dart - 在 State 类之外更改小部件的状态
- matlab - Matlab中的数值二维积分
- sql - SQL ON UPDATE CASCADE - 复合键
- javascript - Adobe Acrobat 中用于多文件转换的 Javascript 失败
- macos - 防止标头通过可可 osx 应用程序中的可执行文件转储
- opentok - Opentok 切换到后置摄像头 SessionDispatcher:error
- excel-formula - 排序逻辑 - Excel 公式
- oracle - Spring Data JPA + Oracle Trigger 将 ID 增加两次