2012-08-30 7 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'のコードはどうですか? afterTextChanged – Swayam

+0

ます。public void(編集可能な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

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をクリアしたいとき、状態をチェックするために複数のチェックステートメントを置くことができます。

EDIT:として @RankoRが指摘して親切だった、onKeyListener()は、ハードウェアのみのキーボードではなく、ソフトキーボードのために働くことに留意してください。 TextWatcherでバックスペースを検出する

+2

OnKeyListenerはHWキーボードでのみ機能します。 – arts777

+0

@RankoR:はい、私はソフトキーボードでonKeyListenerが機能しないことを認識しています。しかし、もう一度質問をした場合、その質問はソフトキーボードに特有ではないことがわかります。しかし、そうです、あなたはもうかなり有効な点を作っています。あなたのポイントを含めるために私の答えを編集します。 – Swayam

+0

@RankoR:答えを編集しました。たぶんあなたはあなたの* downvote *を今見直すことができます。 :D – Swayam

10

、あなたは(バックスペースが入力された場合はカウントが0になります)onTextChange関数に渡される変数countを確認することができ、このように:

@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; 
    } 
    } 
} 

ザ・はbooleanを反応させていますsetText()関数に必要な場合は、再帰的になります。お役に立てれば!

+6

s.length()= 0のときにテキストが変更されないときにコールバックを返すことはありません。キーが押されたときにコールバックはありません。 – DJphy

+1

'onTextChanged'にコールバックはありません。戻るボタンが押され、 'EditText'に文字がありません。なぜこの答えがここに出てくるのか分かりません! – sud007

+0

入力されたものが空白の場合は、count == 0 –

関連する問題