studio ontextchanged eventos edittext delegate changed change addtextchangedlistener android android-edittext textwatcher

ontextchanged - eventos edittext android studio



Cómo aplicar el evento Textchange en EditText (4)

Desarrollé una aplicación simple, como la resta, la suma. En esta aplicación utilizo tres EditTexts, uno para responder y otros dos para preguntas. Quiero calcular la respuesta de la pregunta en el evento de cambio de texto. Pero cuando aplico el evento de cambio de texto en ambos, el evento ocurre pero no funciona correctamente. Porque cuando ingreso el texto en el primer EditText de la pregunta, el evento ocurre pero produce esta excepción:

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

¿Qué debo hacer? Yo uso el TextWatcher para el evento de cambio de texto.

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) {}


Creo que está recibiendo una Cadena vacía " " que está causando este problema. Asegúrese de obtener una cadena no vacía de su EditText .

Considere que su EditText no tiene ningún valor EditText , y si está tratando de obtener su valor y convertirlo en int, se encontrará con este tipo de problema.

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

También puedes ver este enlace para más idea,

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


Creo que lo mejor en caso de que el tipo de texto de edición sea el número ... use la (función de longitud) del parámetro en lugar de la función (equle ())

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


Creo que necesitas verificar que tu valor de editText esté vacío o no primero. Algo como esto:

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

Espero que sea de ayuda.


Utilicé esto y es correcto:

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