Apache flex AdobeAIR:scroller在不同应用程序之间更改焦点时引发错误

Apache flex AdobeAIR:scroller在不同应用程序之间更改焦点时引发错误,apache-flex,air,flex4,flash-builder,scroller,Apache Flex,Air,Flex4,Flash Builder,Scroller,在我的AdobeAIR程序中,每当我使用我的应用程序,并在该应用程序和其他应用程序之间切换焦点时,我都会出现上述错误。(我已经试过好几次了,这个错误是可以重现的。) 是什么导致此问题以及如何解决此问题 编辑:我的程序有一个stackview,其中一个stackview有一个列表。当列表中至少有一个对象时,将发生上述错误 在我的一个项目中,我遇到了同样的问题,而且看起来问题不大。在我的例子中,我刚刚编写了自定义滚动器类,其中添加了focusManager!=空检查。差不多 TypeError: E

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

是什么导致此问题以及如何解决此问题


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

在我的一个项目中,我遇到了同样的问题,而且看起来问题不大。在我的例子中,我刚刚编写了自定义滚动器类,其中添加了focusManager!=空检查。差不多

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]

罗曼,我知道这很古老,但这里有一个适合我的解决方案

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);
            }
        }
    }
}

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


Cheers Adz

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

我遇到了这个问题,结果发现它是由我在网格中作为项目渲染器使用的一些按钮造成的。这些按钮会将视图切换到另一个区域,并在按下后明显保持焦点,造成各种各样的麻烦。我将它们设置为focusEnabled=false,这就解决了问题。

@Community Edit,我不需要dataGrid.scroller.addEventListener中的.scroller来修复我的问题,但是如果您觉得它需要的话,请务必在那里!
dataGrid.scroller.addEventListener(FocusEvent.FOCUS_IN, dataGridFocusInHandler, false, 1);
protected function dataGridFocusInHandler(event:FocusEvent):void {
    if(dataGrid.scroller.focusManager == null) {
        event.stopImmediatePropagation();
    }
}