2017-09-15 4 views
0

J'utilise le OnKeyListener sur un EditText sur Android pour identifier quand l'espace arrière (suppression) du clavier a été pressé et gérer moi-même la suppression du caractère (ce faisant parce que c'est un champ qui ont été synchronisés avec le service externe). Certaines personnes ont dit utiliser le TextWatcher et gérer l'un des événements textchanged. Bien que cela puisse être une solution viable. J'essaie toujours de le faire avec le onKey.onKey ne se déclenche pas lorsque le bouton du clavier retour arrière cliquez sur android

Le problème est que le onKey est seulement déclenché quand il n'y a pas de texte (vide) dans le EditText et pressé retour arrière. S'il y a du texte, le onKey n'est pas déclenché tant qu'il n'a pas supprimé tout le texte.

Tout le monde Ce qui me manque pour le onKey être déclenché dans tous les clics dans le retour arrière?

Ceci est mon 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" /> 

et je suis en train de l'auditeur sur le fragment

this.spellerInput.setOnKeyListener(this); 

Et mon 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; 
} 

Toute aide serait appréciée! Merci: D

Répondre

0

Je ne sais pas si cela est la meilleure façon, mais je trouve que le réglage de la setInputType du EditTextInputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD résout le problème et rend le onKey adopter en tous les clics backspace.

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

Hope it helps