Android java.lang.IndexOutOfBoundsException:设置范围(4…18)结束于长度6之外
我只是使用带有令牌自动完成视图的Android java.lang.IndexOutOfBoundsException:设置范围(4…18)结束于长度6之外,android,Android,我只是使用带有令牌自动完成视图的EditText,我希望EditText输入类型为“phone” 所以我用 if (savedInstanceState == null) { completionView.setPrefix("To: "); completionView.addObject(people[0]); completionView.addObject(people[1]); } onClick(); adapter.notifyDat
EditText
,我希望EditText
输入类型为“phone”
所以我用
if (savedInstanceState == null) {
completionView.setPrefix("To: ");
completionView.addObject(people[0]);
completionView.addObject(people[1]);
}
onClick();
adapter.notifyDataSetChanged();
completionView.setInputType(InputType.TYPE_CLASS_PHONE);
它不起作用了。。需要帮助…提前谢谢..您一定在使用,但我没有遇到任何故障
people = new Person[]{
new Person("Margaret Smith", "8888888888888"),
new Person("Max Jordan", "77777777777"),
new Person("Meg Peterson", "666666666666"),
new Person("Amanda Johnson", "555555555555"),
new Person("Terry Anderson", "4444444444444")
};
adapter = new FilteredArrayAdapter<Person>(this, R.layout.person_layout, people) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater l = (LayoutInflater)getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = (View)l.inflate(R.layout.person_layout, parent, false);
}
Person p = getItem(position);
((TextView)convertView.findViewById(R.id.name)).setText(p.getName());
((TextView)convertView.findViewById(R.id.email)).setText(p.getEmail());
return convertView;
}
@Override
protected boolean keepObject(Person obj, String mask) {
mask = mask.toLowerCase();
return obj.getName().toLowerCase().startsWith(mask) || obj.getEmail().toLowerCase().startsWith(mask);
}
};
completionView = (ContactsCompletionView)findViewById(R.id.searchView);
completionView.setAdapter(adapter);
completionView.setTokenListener(this);
if (savedInstanceState == null) {
completionView.setPrefix("To: ");
completionView.addObject(people[0]);
completionView.addObject(people[1]);
}
completionView.setInputType(InputType.TYPE_CLASS_PHONE);
people=newperson[]{
新人(“玛格丽特·史密斯”、“88888888”),
新人(“Max Jordan”、“777”),
新人(“梅格·彼得森”、“6666”),
新人(“阿曼达·约翰逊”、“5555”),
新人(“特里·安德森”,“444”)
};
adapter=新过滤器DarrayAdapter(this,R.layout.person\u layout,people){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutFlater l=(LayoutFlater)getContext().getSystemService(Activity.LAYOUT\u INFLATER\u SERVICE);
convertView=(视图)l.充气(R.布局.人员布局,父级,false);
}
人员p=getItem(职位);
((TextView)convertView.findViewById(R.id.name)).setText(p.getName());
((TextView)convertView.findviewbyd(R.id.email)).setText(p.getEmail());
返回视图;
}
@凌驾
受保护的布尔keepObject(Person对象、字符串掩码){
mask=mask.toLowerCase();
返回obj.getName().toLowerCase().startsWith(mask)| | obj.getEmail().toLowerCase().startsWith(mask);
}
};
completionView=(ContactsCompletionView)findViewById(R.id.searchView);
setAdapter(适配器);
setTokenListener(此);
如果(savedInstanceState==null){
setPrefix(“To:”);
completionView.addObject(人员[0]);
completionView.addObject(people[1]);
}
completionView.setInputType(InputType.TYPE\u CLASS\u PHONE);
你应该把你的问题说得更清楚,并公布细节。也许你应该公布更多的代码。我不知道你真正的问题是什么,什么是completionView什么是completionView,什么包含人?但我可以告诉你,你有“java.lang.IndexOutOfBoundsException:SetPan(4…18)结束于长度6之外”,因为你的文本长度是6(你有6个字符),你试图将跨度从第4个字符设置为第18个字符,所以你有“IndexOutOfBoundsException”@Jerome..completionView=(ContactsCompletionView)findViewById(R.id.searchView)@Rami..people包含{“name”,“9983423555”}我只希望我的令牌编辑文本完成textview@Jerome...exactly...their将是一个删除最后一个按钮..我的实际问题是当我删除最后一个令牌时,通过删除按钮或键盘上的退格。。。app get crash..@Jerome..非常感谢兄弟..但是当我将类型设置为type_CLASS_PHONE时,删除最后一个标记显示错误..显示设置范围的错误..需要帮助吗