Dispongo di app Android creata da template standard B4XPages ( File / Nuovo / B4XPages )
Sull'unico layout esistente ho aggiunto una label lblMessaggio
Su Main, su Activity_Create inizializzo ed abilito un timer a 5 secondi (timer5sec.Initialize("Timer5s",5000), timer5sec.Enabled=True)
Su Main, l'evento Timer5s_tick contiene queste righe
Su B4XMainPage ho aggiunto la sub Aggiorna_Display
In sostanza sto cercando di capire come aggiornare una label sulla MainPage agendo da altro modulo
Mi attenderei che dopo 5 secondi dall'avvio la lblMessaggio si modificasse
Invece mi viene restituito un errore
Sembra che la label debba essere inizializzata
Ma essendo stata creata col designer, dovrebbe essere automaticamente inizializzata durante il LoadLayout che carica la schermata
Dove sbaglio?
Sull'unico layout esistente ho aggiunto una label lblMessaggio
Su Main, su Activity_Create inizializzo ed abilito un timer a 5 secondi (timer5sec.Initialize("Timer5s",5000), timer5sec.Enabled=True)
Su Main, l'evento Timer5s_tick contiene queste righe
B4X:
Dim pagMain As B4XMainPage
pagMain.Initialize
pagMain.Aggiorna_Display("testo1")
Su B4XMainPage ho aggiunto la sub Aggiorna_Display
B4X:
public Sub Aggiorna_Display(messaggio As String)
lblMessaggio.Text=messaggio
End Sub
In sostanza sto cercando di capire come aggiornare una label sulla MainPage agendo da altro modulo
Mi attenderei che dopo 5 secondi dall'avvio la lblMessaggio si modificasse
Invece mi viene restituito un errore
B4X:
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
Error occurred on line: 32 (B4XMainPage)
java.lang.RuntimeException: Object should first be initialized (Label).
Did you forget to call Activity.LoadLayout?
at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:67)
at anywheresoftware.b4a.objects.TextViewWrapper.setText(TextViewWrapper.java:39)
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:144)
at anywheresoftware.b4a.debug.Debug.delegate(Debug.java:262)
at b4a.example.b4xmainpage._aggiorna_display(b4xmainpage.java:57)
at b4a.example.main._timer1s_tick(main.java:505)
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:351)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at anywheresoftware.b4a.objects.Timer$TickTack.run(Timer.java:105)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7948)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
Sembra che la label debba essere inizializzata
Ma essendo stata creata col designer, dovrebbe essere automaticamente inizializzata durante il LoadLayout che carica la schermata
Dove sbaglio?