2011-01-07 10 views

Odpowiedz

13
EditText et = (EditText) findViewById(R.id.EditText01); 

     et.addTextChangedListener(new TextWatcher() 
     { 
      @Override 
      public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 

       try 
       { 
        char currentChar = arg0.charAt(arg1); // currently typed character 
       } 
       catch(Exception e) 
       { 
        // error 
       } 
      } 

      @Override 
      public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
        int arg3) { 

      } 

      @Override 
      public void afterTextChanged(Editable arg0) { 

      } 
     }); 
+1

Podczas try/catch działa również za pomocą instrukcji if '(s.length()> start) 'zapobiega zawieszaniu się instrukcji podczas korzystania z backspace –

3

można użyć metody TextView.addTextChangedListener(TextWatcher watcher)

TextWatcher oferuje 3 ładne metody:

public abstract void afterTextChanged (Editable s) 

public abstract void beforeTextChanged (CharSequence s, int start, int count, int after) 

public abstract void onTextChanged (CharSequence s, int start, int before, int count) 

Here the doc

0

Zobacz metodę "setOnKeyListener" w EditText.

+1

IMHO naprawdę nie przydatny przy klawiaturze wirtualnej –

0

Odpowiedź przez Vikas prawie pracował dla mnie, ale nie całkiem. Oto co zrobiłem, aby uzyskać rzeczywisty charakter wpisane, jak to jest wpisane:

EditText et = ...; 
et.addTextChangedListener(new TextWatcher() { 
    @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } 

    @Override public void afterTextChanged(Editable editable) { } 

    @Override public void onTextChanged(CharSequence s, int start, int count, int after) { 
     if (s.length() > start + count) { 
      char c = s.charAt(start + count); 
      // do something ... 
     } 
    } 
}); 
Powiązane problemy