Настройка : мое приложение Flex состоит из нескольких «подпапок». По сути, основной областью приложения является ApplicationControlBar с кнопками для каждого из вложенных приложений. Остальная часть области - это холст, на котором отображаются подпапки. Только один подпап виден одновременно. При переключении между подпапками мы делаем canvas.removeAllChildren (), затем canvas.addChild (subAppSwitchedTo). По сути, это ручная реализация ViewStack (плюсы и минусы которой не обсуждаются, поэтому воздерживайтесь от комментариев).
Проблема : В одном из моих подпапов (скажем, подпапка «A») у меня есть функция поиска, в которой результаты отображаются в TitleWindow, которое появляется. Рабочий процесс аналогичен вводу критериев поиска, нажатию кнопки поиска, всплывающему окну TitleWindow с результатами (сетка множественного выбора), выбору нужного результата (результатов), нажатию OK, всплывающее окно исчезает (PopUpManager.removePopUp) и продолжается работа. Это все отлично работает. Проблема в том, что если я переключаюсь на другой подпап (скажем, «B» - где A получает removeAllChildren () 'd и B добавляется), затем переключаю back на A и ищу снова, когда откроется окно TitleWindow, будет TWO , сложенных друг на друга. Если я продолжу перемещаться и вернуться к A, каждый раз при поиске в «стеке» всплывающих окон будет появляться дополнительное всплывающее окно (по одному на каждый раз, когда A получает addChild () 'd).
Кто-нибудь еще испытывал это? Я не уверен, что с этим делать, и это вызывает серьезную ошибку юзабилити в моем приложении. Это кому-нибудь звонит в колокола? Как будто мне как-то нужно очистить PopUpManager или что-то еще (хотя я правильно вызываю removePopUp () для удаления TitleWindow). Пожалуйста, помогите!
EDIT
Flex SDK = 4.5.1
// Subapp "A"
if (!certificateSearchTitleWindow)
{
certificateSearchTitleWindow = new CertificateSearchTitleWindow;
certificateSearchTitleWindow.addEventListener("searchAccept", searchOKPopupHandler);
certificateSearchTitleWindow.addEventListener("searchCancel", searchClosePopupHandler);
}
PopUpManager.addPopUp(certificateSearchTitleWindow, this, true);