2011-01-07 26 views
6

tôi có cái nhìn EditText trong android .. tôi muốn khi bước vào một lá thư đơn vị nhận được thư ..cách nhận thư được nhập ngay lập tức trong android?

đó có nghĩa là cần phải có một người biết lắng nghe hoặc xử lý sự kiện để có được mỗi chữ cái được nhập

hy vọng câu hỏi của tôi là rõ ràng

Trả lời

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

Trong khi try/catch cũng làm việc, sử dụng một câu lệnh if '(s.length()> bắt đầu) 'sẽ ngăn chặn các tuyên bố từ bị rơi khi sử dụng backspace –

3

Bạn có thể sử dụng phương pháp TextView.addTextChangedListener(TextWatcher watcher)

TextWatcher cung cấp 3 phương pháp tốt đẹp:

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

Hãy xem phương thức "setOnKeyListener" trong EditText.

+1

IMHO Không thực sự hữu ích với bàn phím ảo –

0

Trả lời bởi Vikas gần như làm việc cho tôi, nhưng không hoàn toàn. Đây là những gì tôi đã làm để có được những nhân vật thực tế gõ, vì nó được gõ:

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 ... 
     } 
    } 
}); 
Các vấn đề liên quan