Question

J'ai un composant simple que j'ai créé que j'instancier dans mon programme principal comme ceci:

newMessage = new MessageDetail();
newMessage.body.text = "Hello World";

Je reçois l'erreur « Impossible d'accéder à une propriété ou une méthode d'une référence d'objet nul » sur la deuxième ligne parce newMessage n'a pas été entièrement créé avant de frapper la deuxième ligne de code en essayant de mettre mon " corps » le texte de textarea. Je sais que je peux construire un gestionnaire d'événements « creationComplete », mais est-ce pas là une façon plus simple de le faire?

Était-ce utile?

La solution

Ne pas accéder à des sous-composants du tout.

faire au lieu des propriétés régulières anciens sur votre composant. Avoir la liaison des composants de ces valeurs aux composants visuels.

Par exemple:

MyComponent.MXML:

<mxml blah blah blah>

<script>
  [Bindable] public var bodyText;
</scipt>


<mx:TextArea text="{bodyText}" />
</mxml>

Dans votre code:

myComponent = new MyComponent()
myComponent.bodyText = "Hello World!";

En général, je crois que les sous-composants qui sont publics par défaut a été une énorme erreur dans Flex.

Autres conseils

Je peux recommander de créer de créer tous les enfants dans votre composant en remplaçant createChildren méthode (). Il fera en sorte que tous les enfants sont instanciés. Plus et ici

    public class MessageDetail() 
    {

        // ...
        private var body:TextArea;
        // ...

        protected override function createChildren():void
        {
            super.createChildren();

            body = new TextArea();
            addChild(body);
        }

EDIT:

newMessage = new MessageDetail();
addChild(newMessage); // During this step all children will to be initialized
newMessage.body.text = "Hello World";

Merci à Michael Brewer-Davis pour commentaires

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top