Italian Esiste una sorta di 'execute' o esiste un metodo per risolvere questo problema..

SimonAndroid

Active Member
Licensed User
Longtime User
Supponiamo che ho 15 pagine per il quale devo eseguire le stesse istruzioni..
B4X:
    pg1x.Initialize
    B4XPages.AddPageAndCreate("pg1", pg1x)
    pg2x.Initialize
    B4XPages.AddPageAndCreate("pg2", pg2x)
    pg3x.Initialize
    B4XPages.AddPageAndCreate("pg3", pg3x)
    ...ecc..
Esiste un modo per farlo tramite un ciclo, se avesse funzionato una sorta di 'EXECUTE' l'avrei realizzato molto facilmente, da quanto ho capito non esiste tale comando, che tipo di soluzione implementereste per farlo in modo più parametrico?
Grazie in anticipo
 

Star-Dust

Expert
Licensed User
Longtime User
Prova cosi ma non sono certo che non avrai problemi

B4X:
Dim count As Int = 0
    For Each Page As Object In Array As Object(pg1x,pg2x,pg3x)
        CallSub(Page,"Initialize")
        B4XPages.AddPageAndCreate("pg" & count, Page)
        count=count+1
    Next
 

LucaMs

Expert
Licensed User
Longtime User
Prova cosi ma non sono certo che non avrai problemi

B4X:
Dim count As Int = 0
    For Each Page As Object In Array As Object(pg1x,pg2x,pg3x)
        CallSub(Page,"Initialize")
        B4XPages.AddPageAndCreate("pg" & count, Page)
        count=count+1
    Next
Se funzionasse (non ho provato) sarebbe... sbagliato (nel senso che sarebbe meglio che non funzionasse), perché esegui una chiamata (CallSub) su un oggetto che ancora non hai inizializzato e quindi non esiste.
 

Star-Dust

Expert
Licensed User
Longtime User
Se funzionasse (non ho provato) sarebbe... sbagliato (nel senso che sarebbe meglio che non funzionasse), perché esegui una chiamata (CallSub) su un oggetto che ancora non hai inizializzato e quindi non esiste.
L'inizializzazione invece funziona, ho provato... il resto non l'ho provato. Chiami un metodo non la classe. E il metodo inizializza l'istanza della classe.
Stessa cosa di Classe.Initialize. Ancora non è istanziata ma puoi chiamare l'initialize
 

LucaMs

Expert
Licensed User
Longtime User
L'inizializzazione invece funziona, ho provato... il resto non l'ho provato. Chiami un metodo non la classe. E il metodo inizializza l'istanza della classe.
Stessa cosa di Classe.Initialize. Ancora non è istanziata ma puoi chiamare l'initialize
Mannag... io ho provato e non ha funzionato, quindi non ho salvato la prova :mad:

Se ne hai una pronta, B4J... please, pubblicala.

P.S. Eh, no, non funziona. Le pagine non risultano inizializzate.
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Intendo che non genera errore. Ma che funziona non saprei.
 

Star-Dust

Expert
Licensed User
Longtime User
Sappilo :) , perché ho provato. Ho provato a chiamare un metodo della prima pagina "inizializzata" e l'errore è proprio che non risulta inizializzata.
A me questo errore non l'ha dato. Solo che le pagine che genera sono vuote senza layout. Io ho fatto la prova su un esempio di Erel appena ho tempo lo posto
 

Star-Dust

Expert
Licensed User
Longtime User
Vedi
 

Attachments

  • B4JProject.zip
    7.6 KB · Views: 110

SimonAndroid

Active Member
Licensed User
Longtime User
Effettivamente va in errore!!! Dove sta l'inghippo? Questo è un esempio pubblicato da @Erel ?
Immagine 2021-08-12 132321.jpg
 

SimonAndroid

Active Member
Licensed User
Longtime User
Scusa è una mia mania, cerco di scrivere le cose meno ridondanti possibile.. in realtà mi serve anche per altro.. bottoni, label, liste, table, ..ecc.. era solo per capire alcune particolarità e segreti del linguaggio.. cmq ti ringrazio lo stesso, per l'impegno profuso.. 😇
 

LucaMs

Expert
Licensed User
Longtime User
Scusa è una mia mania, cerco di scrivere le cose meno ridondanti possibile.. in realtà mi serve anche per altro.. bottoni, label, liste, table, ..ecc.. era solo per capire alcune particolarità e segreti del linguaggio.. cmq ti ringrazio lo stesso, per l'impegno profuso.. 😇
Fai benissimo, è un'ottima regola da seguire; in casi come questo però...!

Per View ed altri oggetti... dipende da ciò che devi fare. La cosa più frequente, parlando di View, è poterle gestire ragguppandole, inserendole in una struttura (Map, List o, meglio usarli poco, Array) e la tecnica migliore è metterle in un Panel (B4XView!), magari non visibile, trasparente, ed usare il metodo GetAllViewsRecursive. Immagino che tu già lo sappia, ma male non fa :)
 
Top