I think that you will find that all three dialogues are being displayed, in the order that you set in the code. If you dismiss Dialogue 3 then you should see Dialogue 2 underneath it, and Dialogue 1 underneath that. So just reverse your code order.
If you want to raise each dialogue on its own then you will have to change your coding and use Resumable Subs.
Dim Dialog As B4XDialog 'lib: xui_view
Dim xui As XUI
Dialog.Initialize(Root)
Dialog.Title="show messages"
Wait For (Dialog.Show("message 1", "OK", "", "")) Complete (Result As Int)
Wait For (Dialog.Show("message 2", "OK", "", "")) Complete (Result As Int)
Wait For (Dialog.Show("message 3", "OK", "", "")) Complete (Result As Int)
I think that you will find that all three dialogues are being displayed, in the order that you set in the code. If you dismiss Dialogue 3 then you should see Dialogue 2 underneath it, and Dialogue 1 underneath that. So just reverse your code order.
If you want to raise each dialogue on its own then you will have to change your coding and use Resumable Subs.