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.
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?
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.
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)
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
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)