Spanish [Solucionado]Regresar al modulo principal sin recordar los pasos anteriores

Johnny Wing Pérez

Member
Licensed User
Hola señores:

Hoy vengo con otra consulta que me parece que debe ser muy simple de resolver para los ya avanzados, sin embargo, para poder seguir adelante en este mundo nuevo que cada vez me gusta mas recurro a ustedes con la siguiente consulta:

Resulta que ya he seleccionado las diferentes opciones de mis pantallas o formularios, hasta llegar a la ultima en la cual realizo el procedimiento de guardar los datos recolectados de los anteriores formularios, ahora lo que necesito es volver a mi formulario principal para que el usuario pueda iniciar con un nuevo proceso.
Probe con el llamado al modulo principal por medio de StartActivity("Personal") y si regresa a este, sin embargo, si se preciosa el boton o flecha de atras del aparato, me regresa a la pantalla o formulario que estaba en memoria, osea, el ultimo.
Espero ser claro en lo que requiero..

Final de proceso y regresar al modulo principal:
Sub ImgPedir_Click
    If XCLV5.Size=0 Then
        MsgboxAsync("Lista de pédido vacia","Atención")
        Return
    End If
    If Main.IDNOrden=0 Then
        Wait For (CnSql3.NuevaOrden) Complete (Nuevo As Object)
        Main.IDNOrden=Nuevo
    End If
    Dim ListaInfo As List
    ListaInfo.Initialize
    For h = 0 To XCLV5.Size-1
        Dim Reginfo As Clases
        Reginfo.Initialize
        Reginfo.NumOrden=Main.IDNOrden
        Reginfo.IdSalon=Main.IdSalon
        Reginfo.IdMesa=Main.IDMesa
        Reginfo.IdUsuario=Main.IDMesero
        Dim X1 As B4XView=XCLV5.GetPanel(h)
        Dim X2 As B4XView=X1.GetView(0).GetView(2)'Cantidad
        Dim X3 As B4XView=X1.GetView(0).GetView(5)'Codigo de articulo
        Reginfo.CodArticulo=X3.Text
        Reginfo.CantLinea=X2.Text
        ListaInfo.Add(Reginfo)
    Next
    Wait For (CnSql3.RegistrarOrden(ListaInfo)) Complete (Result As Boolean)
    If Result Then
        MsgboxAsync("Listo revice","Atención")
        XCLV5.Clear
        StartActivity("Personal")
    End If
End Sub
 

IdasI4A

Active Member
Licensed User
Si pones despues de StartActivity pones Activity.Finish cuando pulsas la tecla volver se salta la Activity que has finalizado.
Te adjunto un ejemplo en el que desde Main al pulsar un boton vas a la activity frmUno y al pulsar un boton vas a la activity frmDos y al pulsar la tecla volver vuelves a Main.
 

Attachments

  • Preubas.zip
    9.5 KB · Views: 93

Johnny Wing Pérez

Member
Licensed User
Si pones despues de StartActivity pones Activity.Finish cuando pulsas la tecla volver se salta la Activity que has finalizado.
Te adjunto un ejemplo en el que desde Main al pulsar un boton vas a la activity frmUno y al pulsar un boton vas a la activity frmDos y al pulsar la tecla volver vuelves a Main.

Gracias por el ejemplo, funciona perfectamente, pero en el caso de querer regresar al formulario anterior para modificar algún dato al usar Activity.Finish ya eso no seria posible..?, osea mi intención es que al terminar el proceso que esta en el ultimo formulario, el usuario regrese al formulario 1, al aplicar Activity.Finish al ultimo formulario funciona bien y me lleva al Formulario 1, sin embargo, al seleccionar algo de este formulario y pasar al formulario 2, me encuentro con los mismos datos que ya estaban anteriormente cargados, lo que deseo es que al finalizar el proceso en el ultimo Formulario regresar al formulario 1 y todo lo anteriormente guardado en los otros se borre y quede como algo nuevo.

Gracias, por tu ayuda.
 

josete

Member
Licensed User
deseo es que al finalizar el proceso en el ultimo Formulario regresar al formulario 1 y todo lo anteriormente guardado en los otros se borre y quede como algo nuevo.
Tienes varias formas para hacerlo,se me ocurre una variable global tipo boleana con un valor inicial false por ejemplo,si necesitas que los formularios se borren ,pones esa variable a true y en el metodo Activity_Resume de la Activity a la que vuelves evaluas dicha variable actuando en consecuencia.
Otra manera seria con CallSub ,llamando a una funcion de la Activity a la que vuelves desde la que estas ,con algun parametro que indique lo que tiene que hacer (otro booleano por ejemplo).Esa funcion sera llamada al volver a la Activity.
https://www.b4x.com/android/forum/t...teract-between-activities-and-services.18691/
 

José J. Aguilar

Expert
Licensed User
Echa un ojo y haz pruebas con el evento Activity_KeyPress en tus actividades.
Entender cómo funciona el ciclo de vida de Android también viene muy bien:

B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean 'return true if you want to consume the event
    If keycode = KeyCodes.KEYCODE_BACK Then
        'Aquí compruebas lo que quieras, si tienes un panel mostrándose, o si has rellenado el formulario
        Return True  'consumes el evento y la actividad no vuelve atrás
    Else
        Return False 'La actividad "vuelve atrás"
    End If
End Sub
 

Johnny Wing Pérez

Member
Licensed User
[QUOTE = "josete, publicación: 733970, miembro: 59763"]
Tienes varias formas para hacerlo, sé que ocurre una variable global tipo boleana con un valor inicial falso por ejemplo, si necesitas que los formularios se borren, pones esa variable a verdadero y en el método Actividad_Resume de la Actividad a la que vuelves evalúa dicha variable actuando en consecuencia.
Otra manera seria con CallSub, llamando a una función de la Actividad a la que vuelves desde la que estas, con algún parámetro que indique lo que tiene que hacer (Otro booleano por ejemplo) .Esa función será llamada al volver a la Actividad.
https://www.b4x.com/android/forum/t...teract-between-activities-and-services.18691/
[/CITAR]
[CITA] Muchas Gracias, creo que lo resulto por medio de la variable global como mencionaste.[/ CITA]
 

Johnny Wing Pérez

Member
Licensed User
[CITA = "José J. Aguilar, publicación: 733971, miembro: 105784"]
Echa un ojo y haz pruebas con el evento Activity_KeyPress en tus actividades.
Entender cómo funciona el ciclo de vida de Android también viene muy bien:
[URL unfurl = "true"] https://www.b4x.com/android/forum/threads/graphical-life-cycle-of-a-b4a-activity.40515/ [/ URL]

[código]
Sub Activity_KeyPress (KeyCode As Int) As Boolean 'devuelve true si desea consumir el evento
If keycode = KeyCodes.KEYCODE_BACK Entonces
'Aquí compruebas lo que quieras, si tienes un panel mostrándose, o si has rellenado el formulario
Return True 'consume el evento y la actividad no vuelve atrás
Más
Volver False 'La actividad "vuelve atrás"
Terminara si
End Sub

[/código]
[/ CITAR]
Gracias, ese codigo también lo implemente con exito.
 
Top