Возвращение значения нового CheckBox в Flex Air - PullRequest
0 голосов
/ 31 октября 2009

Я пытаюсь сохранить настройки в XML-файле и установить соответствующие данные, если флажок установлен или нет.

private static function createXMLData():void 
{
    prefsXML = <preferences/>;
    prefsXML.application.@windowsstart = Application.application.SettingsPage.settingWindowsStart.selected;
    prefsXML.application.@mintosystray = Application.application.SettingsPage.settingMinToSysTray.selected;
    //prefsXML.windowState.@x = stage.nativeWindow.x;
    //prefsXML.windowState.@y = stage.nativeWindow.y;
    prefsXML.saveDate = new Date().toString();
}

Однако, когда я запускаю его, в флажках не установлены значения из-за первого запуска, и поэтому я получаю ошибку.

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

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

Спасибо.

Ответы [ 5 ]

0 голосов
/ 03 ноября 2009

Похоже, что вы получаете доступ к данным до завершения создания приложения (и, следовательно, до того, как существуют компоненты пользовательского интерфейса). Попробуйте вызвать этот код через некоторое время после отправки события applicationComplete.

<mx:Application ... applicationComplete="onApplicationComplete(event)">
  <mx:Script>
    private function onApplicationComplete(event:Event):void {
      createXMLData();
    }
  </mx:Script>
  ...
</mx:Application>
0 голосов
/ 01 ноября 2009

Вы можете легко обойти тот факт, что флажки могут существовать или не существовать, проверив их:

if(Application.application.SettingsPage["settingWindowsStart"])
    prefsXML.application.@windowsstart = Application.application.SettingsPage.settingWindowsStart.selected;
else
 prefsXML.application.@windowsstart = false;

Это делает предположение о том, что вы указали установку windowsstart в значение false, если компонент не существует. Или же вы можете использовать блок try catch:

try {
    prefsXML.application.@windowsstart = Application.application.SettingsPage.settingWindowsStart.selected;
}
catch(e:Error) {
    trace(e.getMessage());
    prefsXML.application.@windowsstart = false;
}

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

0 голосов
/ 01 ноября 2009

Необходимо понять, что флажок всегда должен иметь значение после создания привязки данных между флажком и некоторым логическим полем.

0 голосов
/ 01 ноября 2009

На самом деле я не могу быть уверен, не глядя на больше кода, но кажется, что SettingsPage - это имя класса, а не экземпляр класса.

0 голосов
/ 01 ноября 2009

Вы пытаетесь получить доступ к свойству selected флажка, но ошибка говорит о том, что сам объект флажка имеет значение null - следовательно, нет выбранного свойства для получения.

Итакне похоже, что флажок существует вообще.Сначала вам нужно будет его создать.

...