Comment appliquer L'événement Textchange sur EditText

j'ai développé une application simple, comme soustraction, addition. Dans cette application, j'utilise trois textes D'édition, un pour la réponse et deux autres pour la question. Je veux calculer la réponse de la question sur l'événement de changement de texte. Mais quand j'applique l'événement de changement de texte sur les deux de ceci l'événement se produisent mais ne fonctionnent pas correctement. Parce que quand j'entre dans le texte dans la première édition de question l'événement se produit mais il jette cette exception:

07-03 16:39:48.844: E/EduApp Log :=>(12537): Error In Text change Event java.lang.NumberFormatException: unable to parse '' as integer

Que dois-je faire? J'utilise le TextWatcher pour le changement de texte événement.

txtOne.addTextChangedListener(this);
txtTwo.addTextChangedListener(this);

public void afterTextChanged(Editable s) {}

public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

public void onTextChanged(CharSequence s, int start, int before, int count) {}  
22
demandé sur Sam 2012-07-03 15:12:14

4 réponses

je pense que vous recevez de la Chaîne vide " " ce qui cause ce problème. Assurez-vous d'obtenir une chaîne non vide de votre EditText.

considerez votre EditText n'a aucune valeur tapée, et vous essayez d'obtenir sa valeur et convertir en int vous allez courir dans ce genre de problème.

edittext.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
            if(!s.equals("") ) { 
                //do your work here 
            }
    }



    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {

    }

    public void afterTextChanged(Editable s) {

    }
});

Également consulter ce lien pour plus d'idée,

https://stackoverflow.com/a/3377648/603744

38
répondu Andro Selva 2018-04-11 05:49:05

j'ai utilisé ceci et c'est correct:

public void afterTextChanged(Editable arg0) {
    String inputs = input.getText().toString();
    Integer index=0;
    if(!inputs.equals("")) 
        index=Integer.valueOf(inputs);

}
1
répondu Omid 2013-01-21 01:32:56

je pense que le meilleur dans le cas où le type edittext est le nombre... utiliser la longueur (fonction) de paramètre au lieu de la fonction (equle ()) ex:

edittext.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        if (s.length() > 0)
                { //do your work here }
        }

    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {

    }

    public void afterTextChanged(Editable s) {

    }
});
1
répondu user6757534 2016-12-29 12:06:31

je pense que vous devez vérifier votre editText valeur est vide ou n'est pas premier. Quelque chose comme ceci:

String textValue;
textValue = edittext().getText().toString());
Log.v("","Value is " + textValue);
if(textValue != ""){
   // Call Text Change Listener Here
}else{
   // Throw error message or something
}

j'Espère que ça aide.

0
répondu myo htet aung 2012-07-03 12:01:42