Adobe AIR的:滚动抛出错误时,改变不同的应用程序之间切换焦点(Adobe Air: scro

2019-06-25 08:51发布

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的程序,我得到了上面的错误,当我用我的应用程序,而改用重点围绕这个应用程序和其他应用程序之间。 (我试过好几次,这个错误是重复的。)

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

编辑:我的程序有一个stackview和stackviews的一个有一个列表。 此错误当列表具有至少一个对象的上方将发生。

Answer 1:

我已经得到了同样的问题,在我的项目之一,看起来它称为SDK的错误 。 在我来说,我只写了自定义滚轮类,其中添加的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);
            }
        }
    }
}

最佳regrads,罗马



Answer 2:

我遇到同样的问题,根本原因是PopUpManager中/ PopUpAnchor不会正确设置的FocusManager如果组件被弹出未实现IFocusManagerContainer接口。 实现这样的接口后,问题消失。



Answer 3:

我知道这是旧的,但这里要说的是对我工作的解决方案。

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

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

也可以被应用到我期待着一个列表

欢呼声ADZ



Answer 4:

我是有这个问题,事实证明,它是由一些按钮,我不得不为我的网格项目渲染器造成的。 这些按钮将视图更改为不同的部分,显然保持焦点之后按下,造成种种麻烦。 我将它们设置为focusEnabled =假,它解决了这个问题。



文章来源: Adobe Air: scroller throws error when changes focus between different applications