Cerrar cuadro de Alerta sin objeto en Flex

Tengo una aplicación que consta de dos estados (estado1 y estado2). Inicialmente ventanas emergentes de estado 1 y luego ventanas emergentes de estado 2. En state2 hay números de operaciones que muestran alerta. Ahora, si hago clic en cerrar sesión, la ventana State2 se cierra y state1 aparece pero la alerta sigue apareciendo, ahora no tengo un objeto de alerta para eliminar usando PopUpmanger.removepopup().

preguntado el 21 de mayo de 12 a las 11:05

Son estos Alert ¿Se requieren llamadas para la operación o son con fines informativos/de depuración? Si es lo último, idealmente debería eliminarlos de la versión de lanzamiento. Además, cualquier ventana emergente de este tipo debería tratarse idealmente en el momento en que está saliendo. state2 y antes de que hayas vuelto a state1. -

El siguiente código puede ayudarlo: --///////////// for(var i:int=0;i

systemManager.popUpChildren.numChildren devuelve 0 incluso alertas si hay una alerta -

dónde encontrar el objeto de alerta en systemManager.rawchildren -

1 Respuestas

Otra solución que puede hacer es enviar todas las alertas a una matriz si la alerta está abierta y si la alerta está cerrada, puede abrirla. Si la alerta está abierta al cerrar la sesión, puede obtener un objeto de alerta y luego puede eliminarlo usando PopUpManager.removePopUp() por bucle for.

//Global array for your application// 
private var tempArray:Array = new Array();

//When you open first alert
var alert1:Alert = Alert.show("First Alert", "Alert");
tempArray.push(alert1);

//When you open second alert
var alert2:Alert = Alert.show("SecondAlert", "Alert");
tempArray.push(alert2);

//algo como esto.... no probado....

for(var i:int=tempArray.length-1;0< i;i--){
PopUpManager.removePopUp(tempArray[i]);
tempArray.pop();
}

// Debajo del código no probado o

PopUpManager.removeAllPopUps()

or

public function closeAllPopup():void
{
var systemManager:SystemManager = Application.application.systemManager
var childList:IChildList = systemManager.rawChildren
for (var i:int=childList.numChildren-1; i >=0; i– )
{
var childObject:* = childList.getChildAt(i)
if (childObject is UIComponent)
{
var uiComponent:UIComponent = childObject as UIComponent
if (uiComponent.isPopUp)
{
PopUpManager.removePopUp(uiComponent)
}
}
}
}

o marque el siguiente enlace: -

http://www.devahead.com/blog/2009/12/getting-all-the-popups-in-a-flex-application/

contestado el 22 de mayo de 12 a las 07:05

en la aplicación hay aproximadamente 1000 alertas, por lo que ni siquiera puedo pensar en hacerlo: Sushant

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.