Spanish Problema con 2 edittext(SOLUCIONADO)

jclor

Member
Hola. Os explico a ver si alguien me puede echar una mano.
Tengo 2 edittext. En el 1 pongo un número, clikeo en el 2 y me da la solución a una operación(en el 2).
A la inversa también funciona bien: pongo un número en el 2 y al clicar en el uno me da la otra solución a la operación(en el 1).
El problema viene porque cuando los 2 están ""llenos" al pulsar en uno de ellos para cambiar el número para hacer otra operación, no consigo que se borren los edittext, sin que me de error y se cierre la aplicación, lo que hace es hacer una nueva operación con los valores que ahora tienen.
La operación la hago en el sub "enterpressed" y se la paso desde "FocusChanged". Un saludo.
 

josejad

Expert
Licensed User
Longtime User
Hola:

Sin que pongas tu código y el error (ambos como texto y entre etiquetas [CODE][/CODE] que te da, es difícil que te ayudemos.
 

jclor

Member
Hola Jose, tienes razón ahí va el código. El error despues de poner el Try, ya no se para.


B4X:
Sub Tiempo_EnterPressed

     Try

        Tiempo.Text=(Distancia.Text*1000)/344

        Tiempo.Text= (Round2(Tiempo.text,2))

    Catch

        Log("")

    End Try

End Sub

Sub Distancia_EnterPressed

    Try

        Distancia.Text=(Tiempo.Text*1000)/344

        Distancia.Text= (Round2(Distancia.text,2))

    Catch

        Log("")


    End Try


End Sub


Sub Tiempo_FocusChanged (HasFocus As Boolean)

  If HasFocus= False Then

    Distancia_EnterPressed

    End If

End Sub

Sub Distancia_FocusChanged (HasFocus As Boolean)

    If HasFocus=False Then

    Tiempo_EnterPressed

    End If

End Sub



Perdonar, nunca había escrito aqui...así mejor no?
 
Last edited:

josejad

Expert
Licensed User
Longtime User
Sí, así se entiende mejor.
Quita los try... catch, ya que eso oculta los errores del Log, y no es conveniente utilizarlos, a menos que sepas que se pueda producir algún error que no controlas (ficheros que no existen, entrada sin sentido del usuario, etc...). Probablemente en algún momento los valores de Distancia.text o Tiempo.Text no serán válidos o estarán vacíos.

Con eso, verás el error por el que se cierra la app en el LOG del IDE.

saludos,
 

jclor

Member
Este es el error que me da si vacío un edittext de números. Por eso tenía el Try, me funcionaba bien..bueno casi bien...
Por cierto el erroren la linea 168, en lo que he puesto aquí corresponde a la 5.
he porbado a crear variables para guardar antes y despues los valores de los edittext. y muchas otras cosas pero sin resultado.

Error occurred on line: 168 (MCalculadoras)
java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:539)
at anywheresoftware.b4a.debug.RDebugUtils.numberCast(RDebugUtils.java:58)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at anywheresoftware.b4a.BA$1.run(BA.java:335)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
 
Last edited:

josejad

Expert
Licensed User
Longtime User
Ves? Pues ya tienes el error más claro ahí:
B4X:
java.lang.NumberFormatException: empty String
En la línea 168, le estás pasando un string vacío a una operación matemática, Distancia.Text está vacío, dará error.
B4X:
Tiempo.Text=(Distancia.Text*1000)/344

Si no das con la tecla, sube un proyecto simple con los dos edittext y la operación y le echamos un ojo (Menú Archivo->Exportar como zip)

saludos,
 

jclor

Member
El mini proyecto. Hay una pequeña explicación dentro, espero que se entienda. Gracias
 

Attachments

  • Operacion.zip
    9.7 KB · Views: 159

angel_

Well-Known Member
Licensed User
Longtime User
Quizás algo así te pueda servir

B4X:
Sub txtTiempo_TextChanged (Old As String, New As String)
    Dim Tiempo As Double
   
    If txtTiempo.Text <> "" And IsNumber(txtTiempo.Text) Then
        Tiempo = txtTiempo.Text
       
        Distancia.Text= Round2((Tiempo.Text*1000)/344, 2)
    Else
        Distancia.text = ""
    End If
End Sub

Sub txtDistancia_TextChanged (Old As String, New As String)
    Dim Distancia As Double
   
    If txtDistancia.Text <> "" And IsNumber(txtDistancia.Text) Then
        Distancia=txtDistancia.Text

        txtTiempo.Text= Round2((Distancia.Text*1000)/344, 2)
    Else
        txtTiempo.text = ""
    End If
End Sub
 
Last edited:

jclor

Member
Hola Angel no funciona, ni siquiera arranca, se para en la linea 7. Además la variable Distancia en
txtTiempo_TextChanged está en rojo por que ahí no está declarada. las llevé al Sub Globals pero sin resultado




B4A Versión: 9.80
Java Versión: 11
Parseando código. Error
Error al analizar el programa.
Descripción del error: Variable 'distancia' no declarada se utiliza antes de que se le haya asignado cualquier valor.
Ha ocurrido un error en la línea: 53 (Main)
Distancia.Text= Round2((Tiempo.Text*1000)/344, 2)
 
Last edited:

angel_

Well-Known Member
Licensed User
Longtime User
Revisa el ejemplo me he apoyado con dos radiobutton creo que de esta forma se entiendo mejor el funcionamiento
 

Attachments

  • Operacion2.zip
    10.2 KB · Views: 167

jclor

Member
Hola Angel, muchas gracias, ahora si funciona, no como yo quería exactamente pero es una solución que puedo adoptar.
 
Top