2012-05-16 2 views
3
TypeError: Error #1009: Cannot access a property or method of a null object reference. 
    at spark.components::Scroller/focusInHandler()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\Scroller.as:2139] 
    at flash.display::Stage/set focus() 
    at mx.core::UIComponent/setFocus()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:9905] 
    at spark.components::RichEditableText/setFocus()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\RichEditableText.as:3126] 
    at spark.components.supportClasses::SkinnableTextBase/setFocus()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\supportClasses\SkinnableTextBase.as:1874] 
    at mx.managers::FocusManager/activateWindowHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\FocusManager.as:740] 
    at flash.events::EventDispatcher/dispatchEventFunction() 
    at flash.events::EventDispatcher/dispatchEvent() 
    at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152] 
    at spark.components::WindowedApplication/nativeWindow_activateHandler()[E:\dev\4.y\frameworks\projects\airspark\src\spark\components\WindowedApplication.as:2739] 

В моей программе Adobe Air я получил указанную выше ошибку, когда я использую свое приложение, и переключаю фокус между этим приложением и другими приложениями. (Я пробовал несколько раз, и эта ошибка воспроизводима.)Adobe Air: скроллер вызывает ошибку при изменении фокуса между различными приложениями

В чем причина этой проблемы и как ее исправить?

EDIT: моя программа имеет стек, а в одном из стеков - список. Эта ошибка выше будет иметь место, когда список содержит хотя бы один объект.

ответ

2

У меня такая же проблема в одном из моих проектов и выглядит так: known bug of SDK. В моем случае я написал собственный класс Scroller, в котором добавлен checkManager! = Null. Что-то вроде

package components 
{ 
    import flash.events.FocusEvent; 
    import spark.components.Scroller; 
    public class MyScroller extends Scroller 
    { 
     public function MyScroller() 
     { 
      super(); 
     } 

     override protected function focusInHandler(event:FocusEvent):void 
     { 
      if(focusManager != null) { 
       super.focusInHandler(event); 
      } 
     } 
    } 
} 

Лучшие regrads, Роман

+0

У меня такая же ошибка. Как вы применяете это? –

1

Я знаю, что это старый, но здесь это решение, которое работает для меня.

dataGrid.scroller.addEventListener(FocusEvent.FOCUS_IN, dataGridFocusInHandler, false, 1); 

и

protected function dataGridFocusInHandler(event:FocusEvent):void { 
    if(dataGrid.scroller.focusManager == null) { 
     event.stopImmediatePropagation(); 
    } 
} 

может также применяться к списку Я ожидаю

Приветствия Adz

+0

@Community Редактировать, мне не нужен был .scroller в dataGrid.scroller.addEventListener, чтобы исправить мою проблему, но если вы чувствуете, что он должен быть там во что бы то ни стало! – Adz

1

Я столкнулся с той же проблемой, и основная причина в том, что PopUpManager/PopUpAnchor не будет правильно задавать focusManager, если компонент, который выскочил, не реализует интерфейс IFocusManagerContainer. После реализации такого интерфейса проблема исчезает.

0

У меня была эта проблема, и выяснилось, что она была вызвана некоторыми кнопками, которые у меня были как средства рендеринга элементов в моей сетке. Эти кнопки меняют вид на другой раздел и, по-видимому, сохраняют фокус после нажатия, вызывая всевозможные проблемы. Я установил их focusEnabled = false, и он решил проблему.