2012-10-02 7 views
5

'u tetiklemek için 'Enter tuşu' nı engelleyin. Kullanıcının bir edittext tıklayacağı ve bilgisayarda yazılan ilgili alfabelerin yazılacağı uzak klavye olarak davranacak bir uygulama yapıyorum.TextWatcher

TextWatcher'ın yardımıyla çeşitli alfabe ve sayılar tespit ettim ve sunucuma başarıyla gönderdim.

Kullanıcı presleri girdiğinde sorun geliyor. Bu da TextWatcher'ı tetikler. ve en son girilen değişiklikleri gönderiyorum, sunucu tarafında hata görünüyor. i is yaptıklarını bir çözüm olarak

, onkeylistener sonra hem aksiyon ve anahtar girip gerçekleştirmek algılar hangisinin onkeylistener set bunu CONSUME, ama ne yazık ki aynı zamanda ilk textwatcher tetiklendiğinde ve.

private TextWatcher watcher = new TextWatcher() { 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if(count>0){ 
     out.println(":"+s.subSequence(start, start+count).toString()); 
     } 
    } 
      . 
      . 
      . 

Sorun o TextWatcher en OnTextChanged ateşler anahtarı yanı sıra onkeylistener girmek basarak üzerindedir: Burada

benim onkeylistener Kodu TextWatcher ait

keyboard.setOnKeyListener(new OnKeyListener() {     
    public boolean onKey(View v, int keyCode, KeyEvent event) {     
    if(keyCode == KeyEvent.KEYCODE_ENTER&&event.getAction()==KeyEvent.ACTION_UP){ 
        out.println("enter"); 
       return true; 
       } 
     return false; 
      } 
    }); 

ait kodudur. oysa sadece anahtar dinleyicinin ateş etmesini istiyorum. Sadece alfabetik harfler, sayılar, bazı semboller vb. Durumlarda Textwatcher'ı kovmak istiyorum.

Ayrıca, karakterlerin (yumuşak) algılanması ve gönderilmesi için farklı yaklaşımlar önerebilirsiniz (yumuşak).

+0

Ayrıca kondisyon koymayı denedim. Son değişikliklerin alfanümerik olmayan char olup olmadığını kontrol etmek için TextWatcher içinde. eğer yaparsa o dışarı out.println() shud. Ama bu da işe yaramıyor. hala giriş anahtarını algılar ve eğer konduğunda girer ve out.println() öğesini yürütür. – PrateekArora

+0

Tamam sanırım çözdüm. Textwatcher'da şunu eklersiniz: (s.toString() .dosyası (start) .contains ("\ n")) eğer bu şekilde girilen son anahtar 'enter' ise o zaman bu olur ve o zaman İstediğin şeyi yapabilirsin. – PrateekArora

cevap

1

Tamam sanırım çözdüm. son anahtar o zaman bu içine gider ve sonra u u istediğini yapabilir 'enter' oldu girdiyseniz bu şekilde

if(s.toString().substring(start).contains("\n")) 

: Textwatcher bu eğer deyimi ekleyin.