s: CheckBox - получение выбранного значения - PullRequest
0 голосов
/ 04 мая 2011
    <fx:Script>
        <![CDATA[  

  protected function button1_clickHandler(event:MouseEvent):void
                {   

                    if (cbAlwaysOnTop.selected) {  // <<<<<< I get the error #1009 here
                    } else {
                    }

                }

        ]]>
    </fx:Script>

<mx:TabNavigator  x="0" y="0" width="100%" height="100%">
    <s:NavigatorContent label="Translate" width="100%" height="100%">
            <s:Button label="test" click="button1_clickHandler(event)"/>
    </s:NavigatorContent>

    <s:NavigatorContent label="Settings" width="100%" height="100%">
        <s:CheckBox x="10" y="22" label="always on top" selected="true" click="checkbox1_clickHandler(event)" id="cbAlwaysOnTop"/>
    </s:NavigatorContent>
</mx:TabNavigator>

Когда я нажимаю кнопку, я получаю сообщение об ошибке:

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

Что я делаю не так?

Это работает, если я сначала переключаюсь на 2-ю вкладку, а затем назад и нажимаю кнопку.

Ответы [ 2 ]

0 голосов
/ 05 мая 2011

Хорошо, я нашел простое решение для этого, используя:

creationPolicy="all" 

Использование этого в:

<mx:TabNavigator  id="x1" x="0" y="0" width="100%" height="100%" creationPolicy="all">

решит проблему.

0 голосов
/ 04 мая 2011

Вы, вероятно, не в том контексте и не имеете ссылки на cbAlwaysOnTop.

Где ваша кнопка и где у вас есть код обработки?

Редактировать: ах, с вашим комментарием внизу, я думаю, что я знаю, что происходит, кажется, что NavigatorContent создает свое содержимое только тогда, когда вы перемещаетесь туда, поэтому, если вы попытаетесь получить доступ к CheckBox внутри, не открыв сначала вкладку, не был создан и выдает пустую ссылку.

Так как я предполагаю, что вы хотите, чтобы настройки сохранялись, решением было бы создать класс PresentationModel и связать значение CheckBox, чтобы вы могли сохранять его между сеансами и получать его, не полагаясь на элемент пользовательского интерфейса. Прочитайте эту замечательную статью, чтобы понять, что вам нужно сделать: http://riarockstars.com/2011/03/16/presentation-model-and-multiple-screens-part-1/

...