2012-08-30 70 views
6

我正在使用TextWatcher,我無法檢測到退格鍵TextWatcher.afterTextChange事件。我還想在textWatcher事件的某些情況下清除textView在TextWatcher中檢測退格

public void afterTextChanged(Editable s) { 
    // TODO Auto-generated method stub 
    // I want to detect backspace key here 
} 
+0

你的'TextWatcher'的代碼好嗎? – Swayam

+0

公共無效afterTextChanged(編輯S){ \t \t \t \t \t \t \t // TODO自動生成方法存根 \t \t \t \t \t \t \t //我想在這裏檢測退格鍵 \t \t \t \t \t \t \t \t \t \t \t \t} –

回答

9

A KeyListener可以滿足您的兩個條件。

mEditText.setOnKeyListener(new OnKeyListener() {     
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if(keyCode == KeyEvent.KEYCODE_DEL){ 
      //on backspace 
      } 
    return false   
     } 
}); 

同樣的onKey()裏面,你可以把多個檢查語句來檢查的情況下,當你想清除textView

編輯:作爲@RankoR還跟指出,請記住,onKeyListener()僅適用於硬件鍵盤,而不是軟鍵盤。

+2

OnKeyListener僅適用於硬件鍵盤。 – arts777

+0

@RankoR:是的,我意識到onKeyListener不適用於軟鍵盤。但是如果你再次通過這個問題,你會發現這個問題並不是針對軟鍵盤的。但是,是的,再一次,你提出了一個非常有用的觀點。將編輯我的答案以包含您的觀點。 – Swayam

+0

@RankoR:編輯答案。也許你現在可以重新考慮你的* downvote *。 :D – Swayam

10

爲了檢測TextWatcher退格,你可以檢查被傳遞到onTextChange功能(計數爲0如果輸入了退格鍵),這樣的變盤點:

@Override 
public void onTextChanged(CharSequence cs, int start, int before, int count) { 

    if (react) { 
    if (count == 0) { 
     //a backspace was entered 
    } 

    //clear edittext 
    if(/*condition*/) { 
     react = false; 
     setText(""); 
     react = true; 
    } 
    } 
} 

的反應booleansetText()函數需要它,否則它變成遞歸。希望這可以幫助!

+6

當s.length()= 0時沒有任何文本改變時,它不會給回電話,按下什麼鍵將不會回叫。 – DJphy

+1

'onTextChanged'沒有收到回調當後退按鈕被按下時,「EditText」中沒有字符。不知道爲什麼這個答案甚至在這裏退出! – sud007

+0

如果輸入一個是空白,那麼也計數== 0 –

相關問題