Italian Domanda sciocca: Come caricare più main?

luciano deri

Active Member
Licensed User
Longtime User

Questa cosa è meravigliosa. Questo comando passa dall'activate e dal resume dei ActSeconda, ma io avevo la necessità di accedere a una sub senza caricare il layout dell'activity. Ho ovviato al problema con una variabile globale come segue:

Nella Main:
B4X:
Private Sub Qualcosa
    actSeconda.chiamato = true
    CallSubDelayed2(actSeconda, "CalcolaIlDoppio", 5)
End Sub

Public Sub Risposta(Risultato As Double)
    Log(Risultato)
End Sub



Nella actSeconda:
B4X:
Sub Activity_Create(FirstTime As Boolean)
    if  Not(chiamato) Then
        Activity.LoadLayout("ly_config")
    end  If
    
End Sub

Sub Activity_Resume
    If chiamato Then
        Activity.Finish
    End If   
End Sub

E' il modo giusto?
 

LucaMs

Expert
Licensed User
Longtime User
E' talmente sbagliato che...
anche io nella mia prima (sconosciuta) app feci qualcosa del genere

Misi una variabile globale in ogni Activity che conteneva il nome della Activity chiamante!

Adesso non so cosa vuoi ottenere esattamente; magari ti sarebbe sufficiente usare una routine in un modulo di codice, dato che queste sono sempre a disposizione.
 

luciano deri

Active Member
Licensed User
Longtime User
Ho diviso il progetto in base alle funzioni, alcune di queste sono legate ad un Activity. Nel caso specifico ne ho una che gestisce e mostra un set di variabili globali di configurazione memorizzati nei preferenze. La Sub LeggiParametri di dell'activity AConfig deve essere chiamata anche nel create della Main, senza che sia mostrato il lyaout ly_config. L'alternativa era creare oltre all'activity module il code module che contenesse LeggiParametri oppure fare la LeggiParametri anche in main con evidente ridondanza di codice. Dal momento che sono molte le activity che hanno sub utili altrove (VerificaLicenza, VerificaVersioneArchivi ..) piuttosto che fare sempre due moduli (uno per l'activity e uno per i codici condivisi) ho pensato che questa fosse una soluzione migliore. Il problema di base sta nel fatto che l'unico modo per accedere ad una sub di un altra activity è
CallSubDelayed e prima di eseguire la sub chiamata passa sempre dal create e dopo dal resume.
 

LucaMs

Expert
Licensed User
Longtime User
Senza entrare nello specifico della tua app, è evidente che normalmente si avranno:

1) routine utili per qualunque tipo di app;
ad esempio DBUtils è un modulo che contiene routine utili per qualunque app che utilizzi i db
2) routine utili per la tua specifica app utilizzate da più Activity;
queste sarà ovviamente utile metterle in moduli di codice
3) routine necessarie soltanto per una determinata activity.

Non pensare che avere più moduli sia un problema; sarebbe come dire che avere molte Activity lo sia.

Io creerei un modulo modGlobals contenente LeggiParametri. Questo modulo e questa routine li userei in tutte le mie app.
LeggiParametri dovrà essere il più generica possibile in modo da essere sfruttata da qualunque tipo di app.

D'altra parte è quello che ottieni usando le librerie. Userai la HttpUtils2, la StringUtils... non sarebbe diverso se, invece di essere librerie, fossero moduli.
 
Last edited:

luciano deri

Active Member
Licensed User
Longtime User
Ok, provo a fare così. Grazie
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…