Italian definire una variabile visibile in tutto il progetto

tmtube73

Active Member
Licensed User
buongiorno a tutti, qualcuno sa dirmi come e dove devo dichiarare una variabile che ho necessità sia vista in ogni pagina che costituisce il progetto?
ho le pagine main, B4XMainPage, CamEx2, Starter

Credo che venga eseguito il codice seguente che quando sono aperte certe activity non deve eseguire e quindi vorrei mettere un if variabile=true esegui il codice altrimenti non eseguirlo

B4X:
Sub GPS_LocationChanged (Location1 As Location)
    CallSub2(B4XPages.mainpage, "LocationChanged", Location1)
End Sub


Grazie.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
io di solito la dichiaro dentro a Starter.
Se guardi alcuni esempi di Erel, di solito anche lui fa così
 

LucaMs

Expert
Licensed User
Longtime User
Uno dei maggiori vantaggi nel creare un progetto B4XPages è che questo potrebbe essere multipiattaforma, ovvero essere un software per Android, iOS, desktop (Windows, Linux, Mac, ...).
Principalmente per questo motivo, ma non solo, eviterei di usare il modulo di servizio Starter; meglio creare un modulo di codice, dandogli un nome significativo, come modGlobals, ad esempio.



Dovresti chiarirti un po' le idee (dare un'occhiata ai "manuali"?) circa i componenti di un progetto:
ho le pagine main, B4XMainPage, CamEx2, Starter
quando sono aperte certe activity
Le "Activity" non sono "attività generiche", come il nome potrebbe far pensare; sono appunto componenti dei progetti Android, composti da parti grafiche e codice.
La B4XMainPage e le B4XPage che crei sono moduli di classe (che contengono di default un pannello, Root).
Lo Starter è un modulo di servizio.
CamEx2 se non sbaglio è un modulo di classe (più sinteticamente: è una classe).
 

Sagenut

Well-Known Member
Licensed User
Longtime User
Dichiarando una variabile in Class Globals della B4XMainPage come Public
B4X:
Sub Class_Globals
   Public Variabile as String
End Sub
poi la potrai richiamare in ogni Pages con
B4X:
B4XPages.MainPage.Variabile
 

LucaMs

Expert
Licensed User
Longtime User
Dichiarando una variabile in Class Globals della B4XMainPage come Public
B4X:
Sub Class_Globals
   Public Variabile as String
End Sub
poi la potrai richiamare in ogni Pages con
B4X:
B4XPages.MainPage.Variabile
Vero ma... ragioniamoci un po'; perché creare una variabile che dovrà essere utilizzata da più parti/componenti del progetto (B4XPage, Activity, Servizi, altri moduli che siano) in una specifica Activity o B4XPage? Meglio dichiararla in un modulo di codice. Questi esistono sempre, finché esiste il processo, e le variabili pubbliche in esso contenute sono immediatamente disponibili.

Quando creo un'Activity o una B4XPage, questa ha (dovrebbe avere) una funzione specifica.
 

Sabotto

Active Member
Licensed User
Io creo un modulo GL.bas e dentro ci metto
B4X:
Sub Process_Globals
    Public Variab As Boolean
End Sub
e poi richiamo da dovunque
B4X:
If GL.Variab then
...

evitando anche la lungaggine di scrivere ad esempio
B4X:
if B4XPages.MainPage.Variab
 
Top