2017-09-15 10 views
0

AndroidのEditTextOnKeyListenerを使用して、キーボードのバックスペース(削除)が押されたときを特定し、文字の削除を処理します外部サービスと同期していた)。 一部の人々はTextWatcherを使用し、textchangedイベントの1つで処理すると言いました。これは実行可能な解決策になる可能性があります。私はまだonKeyでそれをやろうとしています。onKeyがバックスペースキーボードボタンをクリックしたときにトリガーしないandroid

onKeyは、EditTextにテキスト(空)がなく、バックスペースが押された場合にのみトリガーされるという問題があります。テキストがある場合、onKeyはすべてのテキストを削除するまでトリガーされません。

誰かonKeyがバックスペースのすべてのクリックでトリガーされるのはなぜですか?

これは私のxmlです:

   <EditText 
       android:id="@+id/trackpad_speller_input" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="false" 
       android:layout_margin="10dp" 
       android:layout_weight="0.8" 
       android:focusable="true" 
       android:focusableInTouchMode="true" 
       android:imeOptions="actionDone" /> 

と私は任意の助けをいただければ幸いフラグメント

this.spellerInput.setOnKeyListener(this); 

そして、私のOnKey

@Override 
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_DEL && event.getAction() == KeyEvent.ACTION_DOWN) { 
     if (presenter.getSpellerType() == SpellerType.FREE_SPELLER) { 
      Log.d(TAG, "backspace pressed and ignored for FREE_SPELLER"); 
      return false; 
     } else { 
      Log.d(TAG, "backspace pressed for SEARCH_SPELLER"); 
      presenter.deleteChar(); 
     } 
    } 
    return true; 
} 

にリスナーを設定しています!ありがとう:D

答えて

0

これが最善の方法である場合、私は知りませんが、私はEditTextInputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORDsetInputTypeを設定しても問題が解決し、onKeyは、すべてのバックスペースのクリックで起動することになることを見出しました。

spellerInput.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 

は、それが

を役に立てば幸い
関連する問題