L'ipotesi che hai fatto è giusta: vorrei far fare delle scelte prima di cominciare con la pagina "normale".
Bene: quello è il codice!
Ho provato le modifiche che hai detto (anche se non ho capito la funzione)
È tutto commentato. Ho anche inserito un nuovo commento in riga 14.
ed effettivamente compare subito la pagina di SParm, però quando chiudo SParm, anziché tornare alla pagina del MainPage, chiude l'app
Sarebbe utile sapere che piattaforma stai usando, se B4A, B4J o le altre, che io non uso.
Nella pagina SParm dovresti inserire la sub B4XPage_CloseRequest.
Poiché è una Resumable sub deve sempre prevedere un Return: "Return True", permette che l'app si chiuda, "Return False", impedisce all'app di chiudersi. Qui di seguito un piccolo esempio che potrebbe chiarire meglio:
Private Sub B4XPage_CloseRequest As ResumableSub
'Dim msgAskingToCloseAs Object = xui.Msgbox2Async("Close?", "Title", "Yes", "Cancel", "No", Null)
'Wait For (msgAskingToClose) Msgbox_Result (Result As Int)
'If Result = xui.DialogResponse_Positive Then
' Return True
'End If
B4XPages.ShowPageAndRemovePreviousPages("MainPage")
Return False
End Sub
Se usi B4A, questo codice (quello con Return False) torna alla MainPage se premi il tasto back dello smartphone. Se invece usi il testo commentato, prima di compare un messaggio di avviso e se rispondi "Yes" chiude l'app. Se usi B4J, lo stesso comportamento lo hai con il tasto "X" della finestra.
Se preferisci avere un pulsante di chiusura della pagina e vuoi semplicemente tornare alla MainPage o vuoi andare in un altra pagina, devi usare il comando:
B4XPages.ShowPageAndRemovePreviousPages(...) ' tra le parentesi l'ID della pagina in cui si vuole andare
quindi, il tuo codice dovrebbe essere:
Private Sub BUsci_Click
B4XPages.ShowPageAndRemovePreviousPages("MainPage")
End Sub
Anche se usi il pulsante di chiusura, ti consiglio di usare sempre la Private Sub B4XPage_CloseRequest, in modo che tu possa gestire meglio il tasto back in B4A o il tasto di chiusura finestra in B4J.
Poi, secondo me non hai capito bene l'uso del Wait For, ma magari mi sbaglio. Se fossi in te ripasserei/studierei
https://www.b4x.com/android/forum/threads/b4x-resumable-subs-sleep-wait-for.78601/, gli altri tutorial
https://www.b4x.com/etp.html e i booklet
https://www.b4x.com/android/documentation.html.
Wait for ti serve per bloccare l'esecuzione delle righe successive. Ma non ti serve quando l'app ha fatto tutto quello che deve fare e attende il comando dell'utente.
Se attendi una risposta dalla rete che potrebbe impiegare qualche secondo, oppure se hai un ciclo con iterazioni molto pesante o vuoi essere sicuro che tutte le tue variabili siano inizializzate prima di caricare un layout, per evitare che l'algoritmo vada avanti ci metti un Wait For. Guarda l'esempio che ti ho fatto sopra per la B4XPage_CloseRequest: se premi il tasto back dello smartphone o il tasto "X" di chiusura finestra, la sub si attiva e andrebbe avanti ma con il Wait For usato per caricare un messaggio è costretta a fermare l'esecuzione e attendere che l'utente risponda al messaggio prima di andare avanti.