2014-09-26 81 views
1

我正在處理某個項目,其中某些edittext中我只希望它包含字母(小寫字母和大寫字母)和空格。所以我設置它在代碼中動態如下:在文本中出現條件時,在edittext中輸入的文本在較新的android版本上消失

txtoccupation.setFilters(new InputFilter[] { 
       new InputFilter() { 
        public CharSequence filter(CharSequence src, int start, 
          int end, Spanned dst, int dstart, int dend) { 
         if(src.equals("")){ // for backspace 
          return src; 
         } 
         if(src.toString().matches("[a-zA-Z ]+")){ 
          return src; 
         } 
         return ""; 
        } 


       } 
      }); 

上面的代碼工作在我的較舊的Android 2.6 phone.That罰款,當我在比字母和空格之外的任何類型它不會對edittext.But所示,當我嘗試上述新的kitkat設備,文本消失,並在下面的建議中顯示。我該如何解決這個問題?

編輯: 我使用的輸入濾波器

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.isLetter(source.charAt(i))&&!Character.isWhitespace(source.charAt(i))) { 
            return ""; 
          } 
          if(Character.isWhitespace(source.charAt(i))){ 
           return " "; 
          } 
        } 
        return null; 
      } 
    }; 
+0

你使用的是什麼字符編碼服用? – 2014-09-26 12:59:49

+0

@SanjayManohar我不明白你在說什麼。 – 2014-09-26 13:01:04

回答

0

另一種選擇是使用輸入濾波器這樣的字符串的方法:

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))) { 
          return ""; 
        } 
      } 
      return null; 
    } 
    }; 

    edit.setFilters(new InputFilter[]{filter}); 

How do I use InputFilter to limit characters in an EditText in Android?

0

剛加入這一行的EditText上(在你的XML),要限制有字母只有

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ " 
+0

試試吧。這個會工作.. !! – Meenal 2014-09-26 12:44:59

+0

我早些時候嘗試過,它不允許空格。 – 2014-09-26 13:00:38

+0

我編輯了我的答案..添加了空格與文本..然後它將需要空間也 – Meenal 2014-09-26 13:18:05

0

如果(currentString .toLowerCase()。startsWith(searchString)) { 您的代碼 }

Android提供與像toLowerCase(),toUpperCase()等

相關問題