Spanish [SOLUCIONADO] cerrar Activity

Discussion in 'Spanish Forum' started by benji, Nov 18, 2015.

  1. benji

    benji Active Member Licensed User

    Buenos dias muchachos, tengo un "error" que solo me aparece a veces, y solo en algunas aplicaciones...
    el tema es que a veces al cerra un activity y volver a la pantalla principal por decirlo de alguna forma, se vuelve abrir el activity que habia cerrado.
    Estoy usando activity.finish al salir, esta bien o necesito algo mas?

    Saludos.
     
  2. JordiCP

    JordiCP Well-Known Member Licensed User

    El tema podría ser el siguiente.

    Si lanzaste el activity2 (la que estàs cerrando) desde un activity1 (el main), cuando cierras el 2 volverá al 1, quizás al Activity_Create o al Activity_Resume del mismo según si el sistema se lo ha cargado o no.

    Deberías ver si la condición por la cual desde el activity1 se lanza el activity2 sigue activa, y forzar que no lo haga, por ejemplo con alguna variable de Process_Globals que se ponga a cero una vez has lanzado la activity2.

    Los logs del sistema te pueden ayudar a ver qué es lo que está pasando.
     
  3. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola Benji

    Mirate mi tutorial de Guia rápida del Ciclo de Vida de Android (http://www.b4x.com/android/forum/threads/b4a-tutorial-guia-rápida-del-ciclo-de-vida-de-android.38760/ ) y puede que encuentres la respuesta:

    LLAMAS A OTRO ACTIVITY DESDE Main -> Main va a Activity_Pause (Userclosed=False)
    VUELVES DESDE OTRO ACTIVITY -> Main va a Activity_Resume

    Si, es la forma correcta de cerrar un formulario.

    Despues de llamar a un StartActivity(NombreFormulario) , se hace todo el código que le sigue, siempre y cuando no le metas un bucle. Y despues de ejecutar ese código va a Activity_Pause (Userclosed=False) . Creo que lo mas seguro es que la llamada se esté haciendo desde el Activity_Resume (es solo una suposición)

    Saludos
     
  4. benji

    benji Active Member Licensed User

    mmmm, no me cuadra... aqui dejo el codigo del main...

    Code:
    Sub Activity_Create(FirstTime As Boolean)
        
    'Do not forget to load the layout file created with the visual designer. For example:
        Dim HoraCierre As TimeDialog
       
        
    Activity.LoadLayout("Inicio")
        
    Activity.Title = "Galgo BUS"
        MainRecorrido = 
    ""
        MainRuta = 
    File.DirRootExternal
        
    If FirstTime Then
            OnLineOK = 
    False
        
    End If
        
    If File.Exists(MainRuta,"Galgo.s3db") = False Then
            
    Msgbox("Se copia","Copiando...")
            
    File.Copy(File.DirAssets,"Galgo.s3db",MainRuta,"Galgo.s3db")
        
    End If
        DBMain.Initialize(MainRuta,
    "Galgo.s3db",False)
        CurMain = DBMain.ExecQuery(
    "Select * from Param")
        
    If CurMain.RowCount > 0 Then
            CurMain.Position = 
    0
            MainId = CurMain.GetInt(
    "Maquina")
            MainPatente = CurMain.GetString(
    "Patente")
            MainChofer = CurMain.GetString(
    "Chofer")
        
    Else
            
    Msgbox("Debe ingresar los parametros de la Maquina","Apertura")
        
    End If
        
    'Initialise the HttpJob to Check the server.
        Job1.Initialize("Job1",Me)    
        
    'Do the Http Request.
        Job1.Download2("http://api.exg.me/api/Jobs",Array As String("passkey","10897"))
       
        HoraCierre.Is24Hours = 
    True
        
    DateTime.TimeFormat="HH:MM:SS"
        Dclock.Initialize(
    "Dclock")
        
    Activity.AddView(Dclock, 100dip5dip400dip100dip)
        Dclock.Color = 
    Colors.Gray
        Dclock.TextColor = 
    Colors.White
        Dclock.TextSize = 
    60dip
        Dclock.Gravity = 
    Gravity.CENTER
       
       
    End Sub

    Sub Activity_Resume

    End Sub

    Sub Activity_Pause (UserClosed As Boolean)

    End Sub
    Sub btnRuta_Click
        
    StartActivity("Ruta")
    End Sub
    Sub btnParam_Click
        
    StartActivity("Param")
    End Sub
    Sub JobDone (Job As HttpJob)
        
    Log("JobName = " & Job.JobName & ", Success = " & Job.Success)
            
    If Job.Success = True Then      
                
    Select Job.JobName
                    
    Case "Job1"          
                        
    If Job.GetString.Contains("10897"Then  
                             dbM.Initialize(
    "MySQL","xxx.xxx.xxx.xxx","xxxx","xx","Galgo")
                        
    Else
                             
    Msgbox("No tiene Conexion a Internet","Galbus")
                        
    End If          
                
    End Select  
            
    Else
                          
    Msgbox("Problemas para conectar al servidor","Galbus")                  
            
    End If
          
    End Sub
    podria ser que las respuestas de los "Job" lleguen una vez que se ha comenzado el otro activity y por eso vuelve?
     
  5. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola Benji

    Sin ver el codigo inicialmente era dificil saber el problema, ahora con el código que has puesto está mas claro.

    Como tu bien dices, las respuestas de los Job, o sea, cuando entra en el evento Sub JobDone (Job AsHttpJob) es el que te está haciendo volver al formulario. Y esto coindice con lo que decias al principio del Post de que te aparece a veces. Por que la respuesta dependerá de la velocidad del servidor y del dispositivo, por eso era un "error" aleatorio (los peores de localizar)

    Pásalo a un módulo de clase o a un servicio y desde alli controlas si quieres activar algun formulario, dar un mensaje, etc cuando se active el evento. Si lo metes en un servicio no des un mensaje Msgbox que te dará problemas, hazlo con un ToastMessageShow

    Saludos
     
  6. benji

    benji Active Member Licensed User

    ya, me parecia que podria ser eso, pero no estaba seguro, a veces si, a veces no... jajaja...
    ahora voy a ver como lo manejo...
    gracias.
     
  7. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola Benji

    Si te quedó solucionado el problema, podrias añadir a la cabecera [SOLUCIONADO]? asi hacemos mas ágil el foro.
    Gracias

    Saludos
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice