Spanish Multiples Activitys (SOLUCIONADO)

Zabatta

Member
Licensed User
Hola chicos, soy bastante nuevo en esto, hace poco comencé a programar en B4A porque tengo una gran idea que me gustaría ejecutar, pero no conozco mucho de Basic, sin embargo he estado aprendiendo muchas cosas leyendo el foro y viendo youtube, me gustaría saber donde puedo conseguir que hace cada función, por ejemplo "Rnd(x as int, y as int) genera un valor aleatorio" algo de ese tipo pero con todas ls funciones, métodos, etc.

Aprovecho la ocasión para preguntar otra cosa, tengo 2 activitys, uso una y cuando cambio a la segunda, se me monta arriba y al hacer click en ciertas zonas accedo a los editext y botones de la activity de abajo, hay manera de hacer que cuando llame un activity se cierre la anterior?

Porque se me ocurrió inhabilitar todos los botones y editext de la activity anterior al abrir la nueva, pero resulta algo tedioso.

Gracias y disculpen lo extenso.
 

drgottjr

Well-Known Member
Licensed User
la guia: https://www.b4x.com/android/forum/threads/b4x-documentation-booklets.88985/

los botones y demas "views" estan ligados a una sola activity. no se comparten entre activities. los valores
pueden compartirse, pero los views no. cuando dices que tienes 2 activities, no esta claro que hablas
de 2 apps con una activity cada una, o de 1 app con multiples activities.

con una app que consta de multiples activities, es mas facil comunicarse entre si. con 2 apps
independientes, lo compartido es mas dificil. de todas formas, los views se inhabilitan y se
inician cada vez que vuelves a una activity que habias dejado (sin embargo es posible mantener los
valores que formaban parte de una activity y pasarlos a otra. ej., el texto de un view edittext en activity 2
podria ser el texto de un view edittext en activity 1 cuando esta vuelve al primer plane.
siempre que se trate de una app.)

compartir valores entre apps independientes es mucho mas tedioso que duplicar algunos botones en
una app con multiples activities.
 

Zabatta

Member
Licensed User
Muchas gracias por tu respuesta, ciertamente no me explique muy bien, permiteme intentar hacerlo mejor. Tengo una App con 2 Activitys (una principal con una imagen y un botón, y otra secundaria que tiene un formulario con multiples botones y edittext) inicio la app con la activity principal colocando en el OnCreated la siguiente instrucción Activity.LoadLayaod("principal") luego tengo un sub botón_OnClick que tiene la instrucción Activity.LoadLayaod("formulario") en la activity formulario aparte de tener multiples edittext tengo un boto de volver que me vuelve a cargar la activity principal con Activity.LoadLayaod("principal")... Hasta ahí todo funciona correctamente, sin embargo al presionar el botón volver me carga la activity principal y la de formulario me queda abajo, al yo presionar en determinadas parte de la activity principal me habilita el teclado, lo cual no debería ocurrir porque en la principal no tengo edittext, cabe destacar que esto solo ocurre cuando cambio de formulario a principal... por eso digo que algo esta mal ahí y no se como se puede solucionar.

espero haberme explicado un poco mejor.
 

drgottjr

Well-Known Member
Licensed User
iba a recomendar lo mismo. lo que describes no debe de ocurrir. es mas; no puede ocurrir, si comprendo tu explicacion. un ejemplo de lo que has escrito seria util...
 

Zabatta

Member
Licensed User
Perfecto amigos, muchísimas gracias por todo lo que me recomendaron aun no he podido leer todos lo que me recomiendan pero lo haré lo mas pronto posible.

Con lo poco que he leído creo ya tengo varias opciones para poner en practica y ver cual me funciona. La primera que haré sera colocar
Activity.RemoveAllViews
Esto no lo estaba colocando y posiblemente sea la solución, veo que lo utiliza klaus en el ejemplo que mas se parece a lo que estoy haciendo:

- TwoActivityLayouts
One Activity with 2 Layouts.
All the code is in the Main module.
Changing the Layout will not resume the activity.
There are 2 layout files.

B4X:
Sub Globals
  'These global variables will be redeclared each time the activity is created.
  'These variables can only be accessed from this module.
  Dim btnNext1, btnNext2 As Button
  Dim edtText1, edtText2 As EditText
  Dim rbtTest1, rbtTest2 As RadioButton
End Sub

Sub Activity_Create(FirstTime As Boolean)
  Activity.LoadLayout("TwoLayouts1")
End Sub

Sub Activity_Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)
End Sub

Sub btnNext1_Click
  Activity.RemoveAllViews
  Activity.LoadLayout("TwoLayouts2")
End Sub

Sub btnNext2_Click
  Activity.RemoveAllViews
  Activity.LoadLayout("TwoLayouts1")
End Sub

Como dije anteriormente seguiré leyendo todo lo que me recomendaron porque acabo de ver que tengo un mal concepto de Activity, modulo y Layouts. Ya que solo tengo 1 modulo y un activity, pero diversos Layouts, eso explica muchas cosas, disculpen mi ignorancia.

Nuevamente muchas gracias a todos, me han ayudado muchísimo con toda esa información.
 

José J. Aguilar

Well-Known Member
Licensed User
Tengo una App con 2 Activitys (una principal con una imagen y un botón, y otra secundaria que tiene un formulario con multiples botones y edittext) inicio la app con la activity principal colocando en el OnCreated la siguiente instrucción Activity.LoadLayaod("principal") luego tengo un sub botón_OnClick que tiene la instrucción Activity.LoadLayaod("formulario") en la activity formulario aparte de tener multiples edittext tengo un boto de volver que me vuelve a cargar la activity principal con Activity.LoadLayaod("principal").
Ojo, si no he entendido mal ten en cuenta que tienes 2 Activitys, pero estás cargando los dos Layouts en la misma, con lo cual la segunda Activity no te sirve de nada.
Para que se inicie la otra Activity, tienes que llamarla con StartActivity, con con LoadLayout
B4X:
Sub boton_Onclick
   StartActivity("NombreActivity")
End Sub
Si no me equivoco, si quieres cargar el layout formulario y que desaparezca el otro, tendrías que llamar Activity.RemoveAllViews
Pero esta creo que no es la mejor forma.

Cuando leas los tutoriales verás las diferencias, es verdad que al principio es un poco confuso.
Si no tienes demasiado código para manejar los dos layouts, lo mejor es cargarlos en 2 panels, e ir mostrándolos u ocultándolos según te convenga.
 

drgottjr

Well-Known Member
Licensed User
exacto. cuando acabas con activity 2, la principal vuelve automaticamente. no se inicia una activity come lo haces. simplemente estas cargando otro
layout y borrando los views de una activity. no estas iniciando otra activity; la que funcionaba sigue funcionando. pero con la "cara" de otra
 

Zabatta

Member
Licensed User
umm ya veo :eek: creo que con algunas me conviene mas usar paneles, con otras layout y con otras usar módulos independientes.

Muchas gracias
 

Zabatta

Member
Licensed User
Muchas gracias caballeros, me fue de muchisima ayuda, gracias por toda la información suministrada, me ha ayudado a solucionar muchos problemas y a reconstruir la app para que sea mejor, correcta y más eficiente.

Nuevamente muchas gracias
 
Top