Spanish Dos Actividades II

Carlos Pizzi

Member
Licensed User
Longtime User
Hola Foro!

Tengo 2 actividades.

En la Actividad A tengo una tabla ( de clientes ) que la lleno desde un SQLite y 4 botones ( Agregar, Modificar, Borrar, Salir )

Activity.RemoveAllViews
Activity.LoadLayout("A")
LlenarTabla ( código en donde lleno la tabla desde el SQLite )

La Actividad B ( una ficha de clientes ) es llamada por los botones Agregar, Modificar, Borrar de la Actividad A.


Por ejemplo, cuando necesito actualizar un dato de la tabla, llamo la actividad B y hago lo siguiente:

Activity.RemoveAllViews
Activity.LoadLayout("B")

Ahora bien, cuando acepto o cancelo quiero volver a la tabla de la Actividad A y hago lo siguiente:
Activity.RemoveAllViews
Activity.LoadLayout("A")

Pero la tabla está vacía por que tendría que llamar a la rutina LlenarTabla.

Lo que quiero lograr es llamar a la Actividad B desde la A pero sin perder los datos en la A y así cuando vuelvo de la B no tengo que llenar la tabla nuevamente.

Espero que me haya podido explicar, gracias y aguardo sus respuestas.




 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Carlos

Es lógico que te ocurra eso, ya que estas cargando las dos actividades desde el mismo activity (A) , que seguramente es Main, asi que ya por ahi seria complicado mantener los datos si no haces mucho código para volver a tenerlos, y esto te pasa ademas de llamar a los dos Layout desde el mismo sitio, (por lo tanto lo cargas siempre en Main) por que antes de hacerlo borras todos los objetos Activity.RemoveAllViews, asi que si los borras la única solución para que vuelvan a estar es volverlos a cargar.

Para que esto no te ocurra, haz lo siguiente:

- En A carga el Layout A asi:
B4X:
Sub Activity_Create(FirstTime As Boolean)
  Activity.LoadLayout("A")

  LlenarTabla
  ...........
  ..........
  ..........

- Desde A cuando quieras llamar a B emplea solamente esta llamada
B4X:
StartActivity(B)

- En B carga el Layout B asi:
B4X:
Sub Activity_Create(FirstTime As Boolean)
  Activity.LoadLayout("B")
  ...........
  ..........
  ..........

Para salir de B no hagas nada, al pulsar el botón de Back volverá a A

- Tanto en A como en B los datos que no quieras perder declaralos como públicos en (Sub Process_Globals)

- Por lo que entiendo, tu rutina de LLenarTabla lo que hace es llenar los objetos directamente con los valores de la tabla, si es asi, create una estructura del tipo Type y una lista tipo List y ahi cargas tus datos de la base de datos. Cuando vayas a LlenarTabla, antes de hacerlo comprueba si el tamaño del List es mayor que cero, y si lo es en vez de leer de Sqlite para pasar a los objetos, hazlo desde el List que sera mucho mas rápido y desde el List lo pasas a los objetos.


Seria interesante que te leyeras :
[B4A] [Tutorial] 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/



Saludos
 
Last edited:
Cookies are required to use this site. You must accept them to continue using the site. Learn more…