Spanish Regresar de Activity "C" a Activity "A"

Jose Cuevas

Member
Licensed User
Longtime User
Hola amigos, soy nuevo en B4A, estoy tratando de hacer lo siguiente:

Tengo 3 Activity A, B y C, A llama a B y B llama a C, pero al terminar el proceso de C, necesito que regresa directamente a A, pero sin StartActivity(A), porque al darle del BackButton en el teléfono, según la historia de navegación, me regresa a C.

Existe una forma de ejecutar Activity.Finish a C y B al mismo tiempo?

De antemano, muchas gracias por su ayuda
 

Jose Cuevas

Member
Licensed User
Longtime User
Excelente idea, puedo crear una variable Boolean Global, antes de ejecutar Activity.Finish en el C, le coloco True a la variable, y si esa variable es True en el Activity_Resume del B, le ejecuto el Activity.Finish.

Muchas gracias vampirbcn.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola:

puedes capturar la tecla atras en B y C y cargar el A

Algo asi:

B4X:
Sub Activity_KeyPress(KeyCode As Int) As Boolean
 
  ' esto ponlo en el activity B y C
  If KeyCode = KeyCodes.KEYCODE_BACK Then StartActivity(A)
  

   
End Sub

Cuando quieras salir de la aplicacion sal con "ExitApplication" y descargara el que quede en segundo plano.
Si te da problema al volver a entrar en B por que ya hay cosas cargadas y necesitas que empiece de 0, crea una variable global para saber si has entrado en B, y si has entrado por que la variable está activa haz lo que te interese. La variable la puedes resetear en el mismo Activity_KeyPress

Saludos:

Jesus
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Perdona Vampirbcn, cuando estaba contestando me entretuve y cuando añadi mi post vi que habias contestado tu tambien.

Tu idea de la variable en el resume tiene un pequeño problema, y es que tendras que determinar si viene de cargar el activity al inicio, si sales por botón de volver atras, si giras la pantalla, o si entras por descargar otro activity que has llamado desde este. En esos casos entra el resume, asi que esa variable tendrá que distinguir todos esos casos.

Saludos:

Jesús
 

vampirbcn

Active Member
Licensed User
Longtime User
Correcto bgsoft,

pero en su caso solo quiere que se cierre si hace click en un botón por lo que le será muy fácil controlarlo:

Si hace click al botón cerrar pone la variable global a true y los resumes cierran las activitys en otros casos (giro de pantalla, botón retoceso etc) no hace nada, le quedará muy limpio y muy sencillo.

Y no pidas perdón, cuantas más aportaciones más aprenderemos...

Saludos
Jordi
 

Jose Cuevas

Member
Licensed User
Longtime User
Muchas gracias a ambos, me funcionó de esta forma:

1. Cree una variable Global

B4X:
Dim fBack As Boolean

2. Al llamar al Activity A, coloco fBack en False

3. En un botón del Activity C coloqué este código:

B4X:
Sub cmdTotalizar_Click
    CYS.fBack=True
    Activity.Finish  
End Sub

4. Y en el Activity B:

B4X:
Sub Activity_Resume
    If CYS.fBack = True Then
        CYS.fBack=False
        Activity.Finish
    End If
End Sub

De esta forma regresa al A tal y como lo necesito.

Saludos y muchas gracias por su ayuda.
 
Top