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]

在我的 Adob​​e Air 程序中,每当我使用我的应用程序并在此应用程序和其他应用程序之间切换焦点时,都会出现上述错误。(我已经尝试了几次,这个错误是可以重现的。)

是什么导致了这个问题以及如何解决它?

编辑:我的程序有一个堆栈视图,其中一个堆栈视图有一个列表。当列表中至少有一个对象时,将发生上述错误。

4

4 回答 4

2

我在我的一个项目中遇到了同样的问题,看起来它是 SDK 的已知错误。就我而言,我刚刚编写了自定义 Scroller 类,其中添加了 focusManager != 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);
            }
        }
    }
}

最好的毕业生,罗马

于 2012-05-19T21:50:03.980 回答
1

我知道这很旧,但这里有一个适合我的解决方案。

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

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

也可以应用于我预期的列表

干杯阿兹

于 2012-08-15T09:32:38.503 回答
1

我遇到了同样的问题,根本原因是如果弹出的组件没有实现IFocusManagerContainer接口,PopUpManager/PopUpAnchor 将无法正确设置 focusManager。实现这样的接口后,问题就消失了。

于 2012-09-10T11:52:27.717 回答
0

我遇到了这个问题,事实证明这是由我在网格中作为项目渲染器的一些按钮引起的。这些按钮会将视图更改为不同的部分,并且在按下后显然会保持焦点,从而造成各种麻烦。我将它们设置为focusEnabled = false,它解决了问题。

于 2013-09-01T18:29:08.230 回答