作者:wocanimagebi | 来源:互联网 | 2022-12-16 19:25
显然,这和这是我有,虽然我的TextView是AutoCompleteTextView同样的问题.我从我的联系人列表中选择.每当我做出选择时,我都会收到以下错误:
java.lang.IllegalArgumentException: Invalid offset: -1. Valid range is [0, 23]
at android.text.method.WordIterator.checkOffsetIsValid(WordIterator.java:384)
at android.text.method.WordIterator.preceding(WordIterator.java:72)
at android.widget.SpellChecker$SpellParser.parse(SpellChecker.java:599)
at android.widget.SpellChecker$SpellParser.parse(SpellChecker.java:517)
at android.widget.SpellChecker.spellCheck(SpellChecker.java:242)
at android.widget.Editor.updateSpellCheckSpans(Editor.java:707)
at android.widget.Editor.sendOnTextChanged(Editor.java:1256)
at android.widget.TextView.sendOnTextChanged(TextView.java:9368)
at android.widget.TextView.setText(TextView.java:5397)
at android.widget.TextView.setText(TextView.java:5250)
at android.widget.EditText.setText(EditText.java:113)
at com.webnation.text2email.widgets.AutoCompleteContactTextView$2.onItemClick(AutoCompleteContactTextView.java:183)
这似乎来自于在允许范围之外选择的光标.上述链接中给出的解决方法似乎没有帮助.这是崩溃发生的地方:
public class AutoCompleteContactTextView extends AppCompatAutoCompleteTextView implements CustomAdapter.AsyncLoad {
private void init(Context context, AttributeSet attrs, boolean programmatic) {
this.cOntext= context;
this.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (AutoCompleteContactTextView.this.getAdapter() != null && !s.toString().equalsIgnoreCase("")) {
((CustomAdapter) AutoCompleteContactTextView.this.getAdapter()).getFilter().filter(s);
((CustomAdapter) AutoCompleteContactTextView.this.getAdapter()).notifyDataSetChanged();
ArrayList arrPeople = ((CustomAdapter) AutoCompleteContactTextView.this.getAdapter()).dataList;
Log.d("We're Here", "We're here in onTextChanged");
//searchText = s;
}
if (!somethingIsSelected) {
selected = null;
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
this.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
selected = (People) getAdapter().getItem(position);
GlobalVars.selectedPerson = selected;
somethingIsSelected = true;
String name = selected.getName().toString();
setText(null);
setText(selected.getName(), TextView.BufferType.SPANNABLE); //<--crash happens here.
Log.d("Something Selected", String.valueOf(somethingIsSelected));
}
});
}
我在仿真器Nexus 5 API 27上运行它.这也发生在运行API 27的Pixel XL仿真器上.这不会在真实设备(我的三星Galaxy S7 Edge,运行API 24)上崩溃.