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) {}
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,
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);
}
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) {
}
});
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.