Выше я уже писал, что, когда несколько элементов показывается поверх друг друга, важно не только то, что показывается сейчас, но и то, каким образом система пришла в такое состояние: если нам нужно показать диалог, который до этого был в очереди, необходимо сделать его UI видимым, а перед этим инициализировать все элементы с нужными значениями. Если же этот диалог снова оказался на вершине, но потому, что был скрыт предыдущий, не нужно ничего обновлять в его содержимом. Но это, опять же, зависит от специфики конкретного проекта. У нас получилось 4 типа операций, меняющих состояние очереди:
Всякие окошечки и подсказочки самая нудная часть разработки, но необходимая. У меня еще много окон с динамическими данными, т.е. в одном окне может быть разная инфа или взамодействие. Даже не знаю нужно ли так делать, опыт покажет. Я для себя решил сделать так. У каждого окна или ему подобного есть дефолтное состояние, как правило не показывается и не просчитывается инфа. И если вызывается другое окно, то ВСЕ переходит в это дефолтное состояние. Если что то не так, то меняю это дефолтное состояние. Но я свою оконную систему пишу. На движках может этого не быть.