Italian [ solved ]B4A StartActivity con attesa ( Resumable)

Xfood

Expert
Licensed User
Longtime User
Buon Fine settimana a tutti,
ho una applicazioncina dove sto inserendo un bottone tipo filtra lista,
la sub filtra lista e' piu o meno cosi:
B4X:
Sub Menu_Filtro_Click()
    StartActivity(Filtro)
    Msgbox("Fitroattivo",Global.FiltroAttivo)
      
End Sub
vorrei aspettare la fine dell'activity filtro, invece il msgbox viene lanciato subito dopo l'activity filtro.
come posso fare in modo che aspetto la fine dell'activity e poi proseguire con i comandi filtro?
non so se mi sono spiegato bene.
Grazie a tutti per la collaborazione
 

hatzisn

Expert
Licensed User
Longtime User
Stai usando B4XPages? Se la risposta è sì devi utilizzare gli eventi ForeGround e Background della B4XPage credo. Se la risposta è no devi usare la sub Activity_Resume della prima Activity.
 

Xfood

Expert
Licensed User
Longtime User
Stai usando B4XPages? Se la risposta è sì devi utilizzare gli eventi ForeGround e Background della B4XPage credo. Se la risposta è no devi usare la sub Activity_Resume della prima Activity.
Grazie per avermi risposto,
non sto utilizzanzo b4xpage
non ho capito come usare la sub Activity_Resume della prima Activity.

ho una activity main con un bottone filtro,
dentro la click del bottone filtro scrivo:
StartActivity(Filtro)
qui vorrei aspettare la fine dell'activity filtro per proseguire con il codice tipo
if filtroattivo=true the
fai altro
endif
 

LucaMs

Expert
Licensed User
Longtime User
Non puoi fare in quel modo, se non scrivendo qualcosa di "strano" nell'Activity Filtro.

B4X:
Sub Menu_Filtro_Click()
    StartActivity(Filtro)
    Wait For UnaCosaQualsiasi
    '...
End Sub

Nell'Activity Filtro, in una routine che funga da chiusura dell'Activity stessa, ad esempio:
B4X:
Sub btnFine_Click()
    CallSubDelayed(Main, "UnaCosaQualsiasi")
    ' qui puoi, ma non obbligatoriamente, scrivere Activity.Finish
End Sub

Così se è la Main che contiene il Menu_Filtro, altrimenti dovrai fare in maniera leggermente più complicata.
Dichiarare una variabile pubblica di tipo Object nella Process_Globals dell'Activity Filtro - di solito chiamata Callback:

Nell'Activity Filtro:
B4X:
Sub Process_Globals
    Public Callback As Object
    ' ...
End Sub

Sub btnFine_Click()
    CallSubDelayed(Callback, "UnaCosaQualsiasi")
    ' qui puoi, ma non obbligatoriamente, scrivere Activity.Finish
End Sub

' Da qualunque altra Activity:
B4X:
Sub Menu_Filtro_Click()
    Fine.Callback = Me
    StartActivity(Filtro)
    Wait For UnaCosaQualsiasi
    '...
End Sub
 
Last edited:

Xfood

Expert
Licensed User
Longtime User
Ottimo Funziona.....
Grazieee
 

hatzisn

Expert
Licensed User
Longtime User
Questo che Luca ha scritto è corretto. Ma anche la soluzione con Activity_Resume è corretta. Intendevo scrivere che con la seconda Activity puoi mettere il valore di filtro magari in JSON in un variable inclusa in Starter service e quando la Activity di filtro sarà chiusa, scrivere in Activity_Resume della prima activity qualcosa come "Se ritorni da filtro Activity prende il valore di filtro dal Starter è usa lo".
 

hatzisn

Expert
Licensed User
Longtime User
Ah, hai trovata la soluzione.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…