程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> android-Edittext 驗證只允許輸入數字和字符?

android-Edittext 驗證只允許輸入數字和字符?

編輯:編程綜合問答
Edittext 驗證只允許輸入數字和字符?

在程序中 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 start, 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中輸入信息時,程序被強行關閉了。什麼地方出錯呢?

最佳回答:


不要使用 "manual"方法,下面這個方法很簡單:

InputFilter filter = new InputFilter() { 
    public CharSequence filter(CharSequence source, int start, 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 中設置創建 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"
/>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved