Ver la Versión Completa : [ CONSULTA ] Como limpiar EditText?
Bongiovi
11/09/13, 19:17:22
Buenas, tengo un problemilla con EditText.
¿Cómo hago para "limpiar" un EditText? Es decir, tengo un EditText donde se introduce un número, después se pulsa un Button y se realizan unas operaciones. La intención es que al pulsar este Button, se borre el contenido del EditText, de manera que se pueda repetir la operación sin tener que pulsar el botón "Back" para volver a la Activity anterior y abrir de nuevo la Activity mencionada.
Lo intento poniendo "editable.setText("")" en el "onClick" del Button pero así no funciona.
Alguna idea?
Gracias! :ok:
kriogeN
11/09/13, 19:30:48
Supongo que "editable" será el nombre que le has dado al objeto EditText. Pues algo debes estar haciendo mal porque debería funcionarte. ¿Lo cambias en el hilo principal o lo haces en algún Thread?
Bongiovi
11/09/13, 19:45:30
Supongo que "editable" será el nombre que le has dado al objeto EditText. Pues algo debes estar haciendo mal porque debería funcionarte. ¿Lo cambias en el hilo principal o lo haces en algún Thread?
Si si, con editable me refiero al EditText en cuestión. En realidad he sido algo inexacto al explicar el problema xD
Y está todo en el hilo principal.
En el evento "onClick" del Button incluyo "editable.setText("")" y, además, "textview.setText("")" para limpiar el textview mostrado al pulsar el Button en anteriores ocasiones. Ambas cosas funcionan, el caso es que solo realiza las operaciones con el valor del EditText (un número decimal) la primera vez que pulsas el Button. Las demás veves se limita a limpiar tanto el TextView como el EditText.
Un saludo.
mocelet
11/09/13, 20:07:55
No sé si he entendido el problema, prueba a llamar editable.invalidate() después del editable.setText(""), a veces a los setText no les hace ni caso si no invalidas explícitamente
Bongiovi
11/09/13, 22:58:35
No sé si he entendido el problema, prueba a llamar editable.invalidate() después del editable.setText(""), a veces a los setText no les hace ni caso si no invalidas explícitamente
Nada :(
Pongo un ejemplo de ejecución:
Se rellena el EditText (son 6 en realidad), se pulsa el Button, se realizan unos cálculos y son mostrados en un TextView. Además, se borran los datos introducidos en el EditText.
Se rellena el EditText por segunda vez, se pulsa nuevamente el Button, se borran los cálculos mostrados anteriormente. NO se muestran los cálculos con los datos introducidos por segunda vez.
Me explico fatal xD
kriogeN
11/09/13, 23:32:04
Más o menos te he entendido, pero no tiene sentido que sólo lo haga la primera vez. ¿Puedes poner el código del onClick del button?
Bongiovi
11/09/13, 23:46:43
Más o menos te he entendido, pero no tiene sentido que sólo lo haga la primera vez. ¿Puedes poner el código del onClick del button?
Claro, aquí está:
botonRes.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
resultado.setText("");
if (editableLadoA.getText().toString().length() != 0)
a = Double.parseDouble(editableLadoA.getText().toStrin g());
else
a=0;
if (editableLadoB.getText().toString().length() != 0)
b = Double.parseDouble(editableLadoB.getText().toStrin g());
else
b=0;
if (editableLadoC.getText().toString().length() != 0)
c = Double.parseDouble(editableLadoC.getText().toStrin g());
else
c=0;
// Algoritmo para limpiar los EditText después de calcular.
editableLadoA.setText("");
editableLadoA.invalidate();
editableLadoB.setText("");
editableLadoB.invalidate();
editableLadoC.setText("");
editableLadoC.invalidate();
/* Algoritmo de cálculo.
*
*/
resBuilder.append("\nLado a = " + a);
resBuilder.append("\nLado b = " + b);
resBuilder.append("\nLado c = " + c);
resultado.setText(resBuilder.toString());
}
});
mocelet
12/09/13, 08:22:23
Por probar que no quede... haz un resultado.invalidate() al final de todo.
Por cierto, siempre hablas de los EditText pero esos son los que te funcionan bien, no? El problema es en la casilla de resultado, cierto?
Otra cosa, el resbuilder de dónde sale? Lo estás reutilizando?
Bongiovi
12/09/13, 18:13:57
Por probar que no quede... haz un resultado.invalidate() al final de todo.
Por cierto, siempre hablas de los EditText pero esos son los que te funcionan bien, no? El problema es en la casilla de resultado, cierto?
Otra cosa, el resbuilder de dónde sale? Lo estás reutilizando?
Los EditText deben ser el problmea, porque después de la primera ejecución (primera pulsación del Button), dejan de hacerse los cálculos y no se muestra nada en el TextView.
Rresbuilder es un StringBuilder en el que almaceno los resultados y un número para identificar el algoritmo utilizado en los cálculos.
Ahora pruebo lo que me comentas y pongo por aquí si funciona.
Saludos!
mocelet
12/09/13, 18:44:18
Podrías poner un punto de depuración antes de borrar el contenido de los edittext para ver si tus variables a, b y c tienen el valor esperado o no. O si te da pereza el debug, al menos una tostada que imprima el valor de a, b y c.
El resBuilder tendrás que inicializarlo también, digo yo que estarás arrastrando todas las ejecuciones con los append
Bongiovi
12/09/13, 20:12:05
Podrías poner un punto de depuración antes de borrar el contenido de los edittext para ver si tus variables a, b y c tienen el valor esperado o no. O si te da pereza el debug, al menos una tostada que imprima el valor de a, b y c.
El resBuilder tendrás que inicializarlo también, digo yo que estarás arrastrando todas las ejecuciones con los append
Creo que está arreglado, era un problema más sencillo.
Utilizo una variable auxiliar "i" para contar cuantos de los EditText se rellenan y cuantos se dejan en blanco. Se me olvidó poner a 0 la variable "i" después de cada ejecución, así que el comportamiento del código era muy aleatorio xD
En resumen, vaya quebradero de cabeza para esta tontería.
Gracias por la ayuda, un saludo!
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.