Italian Msgbox con conferma

Sberla

Active Member
Licensed User
Longtime User
Salve a tutti ho bisogno di un msgbox chieda una conferma all'utente, il quale dovrà rispondere "si" o "no". Nel caso rispondesse "si" richiama una funzione.

Ho provato con msgbox2, però ho questo problema:
La prima volta si apre la msgbox premo "si" e cambia activity. Poi tramite un button ritorno in quell'activity, però se premo nuovamente "si" non aspetta la risposta dalla msgbox2 e va avanti, quindi poi quando scelgo "si" o "no" non fa niente. (Ho potuto vedere questo tramite debug)

Vi è mai capitato?

Spero di essere stato chiaro.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
da quello che dici sembra non essere un problema di MsgBox2 ma di flusso di programma che per qualche ragione non passa proprio per l'istruzione del MsgBox2 ma viene proprio saltata, magari per qualche variabile non reinizzializzata o altro, per cui direi proprio di eseguire un bel passo-passo del programma e capire il perchè.

Sergio
 
Last edited:

Sberla

Active Member
Licensed User
Longtime User
Comunque mi confermate che per fare una msgbox chiedendo conferma all'utente si fa con Msgbox2? E' quello che serve a me.

Ma Msgbox2 è una classe nativa che blocca, forse per un tot di secondi, l'app e poi riparte quando premo una scelta?

Non so se c'è qualcosa che funziona ad eventi. Si apre un msgbox e quando premi fa scattare un evento.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
dipende da cosa devi fare

il MsgBox blocca l'esecuzione del programma e attende che l'utente scelga "si" o "no" e poi prosegue con la linea successiva

se invece ti serve "a eventi" devi fartelo da solo
 
D

Deleted member 103

Guest
Ciao @Sberla ,

non sò se ho capito bene, ma io ti consiglio di usare il MsgBox2 +- in questo modo, mai eseguirlo direttamente.
B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    'Activity.LoadLayout("Layout1")

    CallSubDelayed(Me, "getMsgbox")
    Return
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub getMsgbox
    Dim ret As Int = Msgbox2("Message", "Titel", "Si", "No", "Non so :)", Null)
   
    If ret = DialogResponse.POSITIVE Then
        'fai quel che vuoi
    End If
   
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
non sò se ho capito bene, ma io ti consiglio di usare il MsgBox2 +- in questo modo, mai eseguirlo direttamente.
Motivo? Per non bloccare il thread? In questo caso non risolvi, perché il msgbox lo esegui lo stesso.

Se poi metti il Return nella Activity_Create a quel punto tutta l'Activity servirà solo a quello, visualizzare il msgbox, penso (senza nemmeno chiudere l'Activity definitivamente).
 
Last edited:
D

Deleted member 103

Guest
Poi tramite un button ritorno in quell'activity, però se premo nuovamente "si" non aspetta la risposta dalla msgbox2 e va avanti, quindi poi quando scelgo "si" o "no" non fa niente.
Da quello che ho capito il thread qui non si ferma, per questo si usa, almeno io(consigliato anche da Erel), questo tipo di call indiretto.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
mi sembra che stiamo andando fuori tema, poichè (da quel che ho capito io) lui non ha il problema di fermare il thread o no, ha il problema che la seconda volta che passa per quel punto di programma la MsgBox non si apre, almeno così avevo capito io
 
D

Deleted member 103

Guest
Mi sà che senza una palla di cristallo qui non si risolve niente. :D
 

Sberla

Active Member
Licensed User
Longtime User
Comunque ho risolto usando una classe "CustomMsgBox" che funziona con l'evento. Grazie a tutti per il vostro aiuto :)
 
Top