【问题标题】:java.lang.IndexOutOfBoundsException: setSpan (4 ... 18) ends beyond length 6java.lang.IndexOutOfBoundsException: setSpan (4 ... 18) 结束超过长度 6
【发布时间】:2014-12-12 06:48:27
【问题描述】:

我只是将EditText 与令牌自动完成视图一起使用,我希望EditText 输入类型为“电话” 所以我用了..

 if (savedInstanceState == null) {
     completionView.setPrefix("To: ");
     completionView.addObject(people[0]);
     completionView.addObject(people[1]);     
 }
 onClick();
 adapter.notifyDataSetChanged();    
 completionView.setInputType(InputType.TYPE_CLASS_PHONE);

它不起作用..需要帮助..提前谢谢..

【问题讨论】:

  • 也许您应该发布更多代码。我不知道你真正的问题是什么,你的completionView是什么
  • 什么是completionView,什么包含people?但我可以告诉你,你有“java.lang.IndexOutOfBoundsException: setSpan (4 … 18) ends beyond length 6”因为你的文本长度是 6(你有 6 个字符)并且你试图设置从第 4 到第 18 个字符的范围,这样你就有了“IndexOutOfBoundsException”
  • @Jerome..completionView = (ContactsCompletionView)findViewById(R.id.searchView);
  • @Rami..people 包含{"name","9983423555"}
  • 我只想要我的标记完整文本视图的编辑文本

标签: android


【解决方案1】:

你一定是在使用this library,不过我没有崩溃。

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);

你应该让你的问题更清楚,并发布详细信息。

【讨论】:

  • @Jerome ......确切地说......他们将是一个删除最后一个按钮......我的实际问题是当我通过删除按钮或键盘上的退格键删除最后一个令牌时......应用程序崩溃..
  • @Jerome .. 非常感谢兄弟.. 但是当我将类型设置为 TYPE_CLASS_PHONE 时删除最后一个标记会显示错误...在设置跨度时显示错误..需要帮助
猜你喜欢
  • 2017-12-22
  • 2018-07-02
  • 2012-01-25
  • 1970-01-01
  • 2018-07-12
  • 2020-05-31
  • 2019-01-25
  • 2015-12-28
  • 1970-01-01
相关资源
最近更新 更多