2013-11-21 2 views
0

Говорят, что я могу передавать любые данные при нажатии на экран с помощью метода navigator.pushView(). Я просто не передать массив как:null ошибка ссылки на объект с pushView()

var arr:Array=[4,5,6,7,8,9]; 
navigator.pushView(SecondView,arr); 

и в моем SecondView конструктору, независимо от того, как я пытаюсь получить доступ к его свойство данных, я получаю сообщение об ошибке:

Невозможно получить доступ к свойству или методу ссылка на нулевой объект.

Я делаю это неправильно?

+0

Вы в конечном итоге что-то делаете с данными в свойствах данных «SecondViews»? Как взято из документа Api: «данные указывают любые данные, переданные в представление. Этот объект записывается в свойство View.data нового представления». (http://help.adobe.com/en_US/flex/mobileapps/WSa122979b4619725672e48c412a3e152164-7fff.html) Итак, если вы что-то сделаете в настройщике свойства данных в SecondView, это может вызвать проблемы. –

+0

ну, я ничего не сделал с данными SecondView, кроме метода pushView(). У меня есть класс commonView (extends View), который определяет его собственное свойство width и height и т. Д., И ничего не сделал для изменения его данных. И мой SecondView расширяет commonView, если это будет причиной нулевых данных? если да, как мне сделать, чтобы получить доступ к данным, точно переданным в SecondView в методе pushView()? спасибо – gone

ответ

0

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

Как таковой, я всегда ожидал, что свойство data будет равно null в конструкторе.

Читайте также на странице Flex Component LifeCycle. Шаг 1 и 2 важные моменты этой проблемы:

  1. Вы называете конструктор компонента ...
  2. Вы настроить компонент, установив его свойства ...

Вам нужно будет получить доступ к свойству data в какой-то момент не в конструкторе. Возможно, в прослушиватель событий, например, инициализировать или создатьComplete. Возможно, как часть метода жизненного цикла, например updateDisplayList() или commitProperties().

+0

Спасибо, что помогли мне дважды! hah Я как-то думал, что это может быть проблемой конструктора, и добавил EventListener из Event.ADDED в мой просмотр, но это событие отправляется много раз во время метода pushView(). Может быть, я должен попробовать другой тип события, чтобы сделать это. И я хочу, как вы, другое: я вызвал PopupManager.addPopUp(), чтобы отобразить окно предупреждения в одном из моих представлений, коды выполняются, но окно никогда не появлялось. Но когда я помещаю этот код в корневое приложение (ViewNavigatorApplication), и вызывать его из моего представления, он работает. Если я могу использовать всплывающие окна только таким образом? – gone

+0

@ Hubcin Без просмотра вашего кода; трудно догадаться, в чем проблема. Вы должны иметь возможность создавать всплывающее окно из любого компонента. Возможно, вам стоит задать более подробный вопрос по этому вопросу. – JeffryHouser

Смежные вопросы