Spanish problema de principiante

jeroF

New Member
hola buenas, necesito crear un proyecto donde se pase información de un Ativity a otro, específicamente que dependiendo del botón apretado de uno, cambie los valores de las Vistas del otro (imagevew, label, etc), perdón que este preguntando algo que pueda ser obvio pero hace 3 días que todavía no puedo conseguir esto y tengo prisa. :(
 

Duque

Active Member
Licensed User
Longtime User
Usa páginas
Te cambiaria la vida…

Aunque lo que necesitas
Podrías resolverlo con callsub
 

Sergio Haurat

Active Member
Licensed User
Longtime User
hola buenas, necesito crear un proyecto donde se pase información de un Ativity a otro, específicamente que dependiendo del botón apretado de uno, cambie los valores de las Vistas del otro (imagevew, label, etc), perdón que este preguntando algo que pueda ser obvio pero hace 3 días que todavía no puedo conseguir esto y tengo prisa. :(
Si podes, compartí el proyecto así

1719161432286.png


Como dice @Duque, la forma correcta es usar B4XPage
 

jeroF

New Member
tuve problemas al usar b4xpage al principio, decís que debería traspasar todo?

creo que no me va a dejar pasar el archivo por ser muy pesado, tiene muchas imágenes, así que paso los dos layouts con los que quiero interactuar
 

Attachments

  • horizontales_mangas.bal
    16.8 KB · Views: 84
  • descripcion_manga.bal
    3 KB · Views: 86

josejad

Expert
Licensed User
Longtime User
Hola JeroF:

Solo con los layouts no podemos hacer nada. Si el proyecto es muy grande, podrías subirlo a Google Drive, Dropbox o similar y pasar por aquí el enlace.
Lo que tienes no es un problema de principiante, sino casi de cualquiera porque el ciclo de vida de una app de Android con Activities es algo complicado. Puedes verlo gráficamente aquí. Como ves, con solo girar la pantalla ya la actividad "olvida" todo, variables, layout, etc... y se reinicia, por así decirlo, por lo que tienes que andar guardando el estado para recrearlo, etc...

Tienes un buen ejemplo de cómo hacer esto como te han comentado con CallSubDelayed en este ejemplo. También puedes ver este otro.
Otra forma puede ser al cerrarse una activity (pause) que guardes tus variables, etc... por ejemplo en KVS (una base de datos muy sencilla de usar) y luego las leas (si existen) al hacer el activity resume. Aún más sencillo usando StateManager aunque como verás en el post, indica que es de 2011 y es mejor usar B4XPages ?

Como te ha dicho Duque, usando B4XPages se simplifican mucho las cosas porque todo lo haces en una misma activity, con lo cual las variables, etc... se mantienen. Tiene el inconveniente de que la app que desarrolles no podría cambiar de orientación (o siempre apaisada o siempre "retrato"), pero si te fijas hay muchísimas apps desarrolladas de este modo.

Tienes un tutorial sobre B4XPages en este post traducido por @Mariano Ismael Castro

saludos,
 

jeroF

New Member
gracias por el material, si me surge otro problema lo publico devuelta en este hilo.

acá dejo el drive del trabajo.
 

josejad

Expert
Licensed User
Longtime User
Lo siento, no llego a ni a poder ejecutar tu proyecto.

Hay un error en esta línea (no sé qué hace ni reconozco la sintaxis)

B4X:
(Mangas.BNH_M) = selectimg_Resume

Y si la comentas y ejecutas, da este error y no llega a iniciarse:

error:
:null,0
java.lang.RuntimeException: Cannot parse: null as boolean
    at anywheresoftware.b4a.BA.parseBoolean(BA.java:640)
    at anywheresoftware.b4a.BA.ObjectToBoolean(BA.java:710)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
    at b4a.example.starter.onCreate(starter.java:48)
    at android.app.ActivityThread.handleCreateService(ActivityThread.java:5098)
    at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2506)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.app.ActivityThread.main(ActivityThread.java:8893)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
*** Service (starter) Create ***
java.lang.RuntimeException: Unable to create service b4a.example.starter: java.lang.RuntimeException: java.io.EOFException
    at android.app.ActivityThread.handleCreateService(ActivityThread.java:5111)
    at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2506)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.app.ActivityThread.main(ActivityThread.java:8893)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: java.lang.RuntimeException: java.io.EOFException
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:188)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:201)
    at b4a.example.starter.onCreate(starter.java:56)
    at android.app.ActivityThread.handleCreateService(ActivityThread.java:5098)
    ... 9 more
Caused by: java.io.EOFException
    at java.io.DataInputStream.readByte(DataInputStream.java:275)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:344)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
    ... 12 more

Cada actividad, podrías sustituirla por una B4XPage.
De todos formas, con las soluciones que tienes en el hilo, deberías poder pasar datos entre tus actividades.

saludos,
 
Top