我有一个从地址解析器获取位置地址的应用,它在线程内执行请求。调用getActivity()。runOnUiThread时,我已经在字符串变量中包含了来自geocoder的地址响应,然后检查它是否为空,然后开始将其值分配给视图中的字段:
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (isAdded())
if (!TextUtils.isEmpty(strAddress)){
et.setFocusable(false);
et.setFocusableInTouchMode(false);
et.setText(strAddress);
et.setTextColor(getResources().getColor(
android.R.color.black));
et.setFocusable(true);
et.setFocusableInTouchMode(true);
} else {
et.setTextColor(getResources().getColor(
android.R.color.black));
}
etSource.setEnabled(true);
}
});
Run Code Online (Sandbox Code Playgroud)
在这条线上:
et.setText(strAddress);
Run Code Online (Sandbox Code Playgroud)
错误
ArrayIndexOutOfBounds:设置范围-1
抛出并间歇性地发生,为什么会发生?
根据要求编辑
java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1270)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:684)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:677)
at android.text.Selection.setSelection(Selection.java:76)
at android.widget.Editor$SelectionModifierCursorController.resetDragAcceleratorState(Editor.java:5689)
at android.widget.Editor$SelectionModifierCursorController.resetTouchOffsets(Editor.java:5679)
at android.widget.Editor.sendOnTextChanged(Editor.java:1280)
at android.widget.TextView.sendOnTextChanged(TextView.java:8220)
at android.widget.TextView.setText(TextView.java:4494)
at android.widget.TextView.setText(TextView.java:4348)
at android.widget.EditText.setText(EditText.java:89)
at android.widget.TextView.setText(TextView.java:4323)
at library.fragments.MapFragment$17$1.run(MapFragment.java:2156)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:159)
at android.app.ActivityThread.main(ActivityThread.java:6097)
at java.lang.reflect.Method.invoke(Native Method) …Run Code Online (Sandbox Code Playgroud)