Ma una variabile dichiarata Public in Page1, come la richiamo in Page2?
E a cosa serve la routine Initialize?
'in B4XMainPage
Sub Class_Globals
Public Page1_Glo1 As Int = 20
End Sub
Ti rispondo con "leggerissimo" ritardo ?
(Cosa vuoi che siano 3 anni in confronto agli 8 o 9 che ho in mente un'app che non ho ancora realizzato/pubbllicato?!).
Premesso che non mi piacciono molto le variabili pubbliche, preferisco di gran lunga creare una proprietà dell'oggetto per modificare, da fuori, il valore di una variabile privata, globale solo a livello di classe...
la "richiami" esattamente come con qualunque oggetto, perché quello che deve essere chiaro è che una B4XPage è una classe della quale si creano oggetti (istanze della classe).
Quando scrivi:
Label1.Text = "Ciao"
hai "richiamato" un membro della classe Label ma più precisamente dell'oggetto Label1 che è un'istanza della classe Label (classe a noi nascosta, fa parte di B4A, o meglio di Android).
Stessa cosa con le classi B4XPage. Se ad esempio hai una classe (B4XPage) Catalogo, in qualche punto del progetto avrai una variabile-oggetto di tipo Catalogo. Avrai qualcosa tipo:
Public CatalogoXXX As Catalogo
CatalogoXXX.Initialize
'Solo in quanto è una B4XPage, l'aggiungerai alla "lista" di pagine,
Poi "richiamerai" (utilizzerai) i suoi metodi, le sue proprietà e le sue variabili pubbliche come fai con qualunque altro oggetto, quindi come la Label1 d'esempio sopra.
CatalogoXXX.VariabilePubblica = 100
Ma dipende da dove hai dichiarato (e inizializzato) CatalogoXXX. Se io l'avessi dichiarata nel mio modulo di codice chiamato modAffariMiei, dovrei scrivere:
modAffariMiei.CatalogoXXX.Esegui ("Esegui" potrebbe essere un metodo, una Sub pubblica della classe CatalogoXXX)
'In un altra page Log(B4XMainPage.Page1_Glo1 )' dà errore. Come va scritta?
Ti dà errore perché B4XMainPage è una classe, non un'istanza della classe B4XMainPage (non un oggetto),
Esiste un oggetto di tipo B4XMainPage di nome
MainPage che sta in B4XPages.GetManager.
MainPage, quindi dovresti scrivere:
B4XPages.GetManager.
MainPage.Page1_Glo1 = 100
Public Sub Initialize 'Cosa ci va qui? End Sub
Semplicemente ci vanno tutte le inizializzazioni delle variabili (anche oggetto) che userai.
Anche se tutti hanno il "vizio" di inizializzare gli oggetti pagina nella B4XPage_Create, sarebbe il posto più corretto anche per fare questo.