Search code examples
actionscript-3apache-flexairflex4flex-spark

FlexGlobals.topLevelApplication don't work on variable. How to fix?


it's work: FlexGlobals.topLevelApplication.addElement(item); but it's not:

public var app:Object = FlexGlobals.topLevelApplication;
trace(app) //it's null
app.addElement(item);

Error: Cannot access a property or method of a null object reference.

Why it's not working via variable?

Edit: it's working in function like that:

private function bekleticiEkle():void{
    var app:Object = FlexGlobals.topLevelApplication;
    trace(app) //it's testClientApp0
    var item:Label = new Label;
    item.text = "Test";
    app.addElement(item);
}

Solution

  • I found the solution. We must define it when application is created. So first, use it:

    private var app:Object;
    protected function init(event:FlexEvent):void
    {
        app = FlexGlobals.topLevelApplication;
    }
    private function doSomething():void
     trace(app)
    }