在我的应用程序中,我必须验证edittext.它应该只允许字符,数字,下划线和连字符.
这是我的代码:
edittext.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s,int start,int before,int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s,int count,int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // validation codes here location_name=s.toString(); Toast.makeText(getApplicationContext(),location_name,Toast.LENGTH_SHORT).show(); if (location_name.matches(".*[^a-z^0-9].*")) { location_name = location_name.replaceAll("[^a-z^0-9]",""); s.append(location_name); s.clear(); Toast.makeText(getApplicationContext(),"Only lowercase letters and numbers are allowed!",Toast.LENGTH_SHORT).show(); } } }); location.add(location_name);
在这里,当我输入edittext,应用程序是强制关闭.请给我建议.谢谢提前.
解决方法
而不是使用您的“手动”检查方法,在Android中有一些非常容易的东西:
InputFilter filter = new InputFilter() { public CharSequence filter(CharSequence source,int end,Spanned dest,int dstart,int dend) { for (int i = start; i < end; i++) { if ( !Character.isLetterOrDigit(source.charAt(i)) || !Character.toString(source.charAt(i)) .equals("_") || !Character.toString(source.charAt(i)) .equals("-")) { return ""; } } return null; } }; edit.setFilters(new InputFilter[]{filter});
或者另一种方法:在xml中设置允许的字符,您正在创建yor EditTExt:
<EditText android:inputType="text" android:digits="0,1,2,3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm,_,-" android:hint="Only letters,digits,_ and - allowed" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。