Note that there are some explanatory texts on larger screens.

plurals
  1. POUpgrading from Flex 3.0 to Flex 3.6 - Custom Combobox getting TypeError in super.commitProperties()
    primarykey
    data
    text
    <p>I am working on upgrading Flex 3.0 application to Flex 3.6 SDK. The application has custom controls for input text, combo-boxes, etc. When I click on the combo-box I get exception when super.commitProperties() is called. This works fine with Flex 3.0 SDK.</p> <pre><code>TypeError: Error #1009: Cannot access a property or method of a null object reference. at mx.controls::ComboBox/destroyDropdown()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\ComboBox.as:1681] at mx.controls::ComboBox/styleChanged()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\ComboBox.as:1177] at mx.core::UIComponent/setBorderColorForErrorString()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\core\UIComponent.as:5048] at mx.core::UIComponent/commitProperties()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\core\UIComponent.as:6033] at mx.controls::ComboBase/commitProperties()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\ComboBase.as:993] at mx.controls::ComboBox/commitProperties()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\ComboBox.as:1291] at com.hanover.utility.controls.autotestcontrols::AutotestComboBox/commitProperties()[C:\App\Control\PLCustomComboBox.as:59] at mx.core::UIComponent/validateProperties()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\core\UIComponent.as:5966] at mx.managers::LayoutManager/validateProperties()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:539] at mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:689] at mx.managers::LayoutManager/validateNow()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:748] at mx.controls::ComboBox/displayDropdown()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\ComboBox.as:1638] at mx.controls::ComboBox/downArrowButton_buttonDownHandler()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\ComboBox.as:1796] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\core\UIComponent.as:9590] at mx.controls::Button/http://www.adobe.com/2006/flex/mx/internal::buttonPressed()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\Button.as:2504] at mx.controls::Button/mouseDownHandler()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\Button.as:2750] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\core\UIComponent.as:9590] at mx.controls::ComboBase/textInput_mouseEventHandler()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\controls\ComboBase.as:1384] </code></pre> <p>PLCustomCombobox.as pseudo-source with line # 59 indicated below</p> <pre><code>package com { import com.name.utility.events.PLControlEvent; import com.name.utility.managers.ComboToolTipManager; import flash.events.Event; import mx.controls.ComboBox; import mx.events.FlexEvent; [Event(name="controlInitComplete", type="com.events.PLControlEvent")] [Event(name="plusControlValueChanged", type="com.name.utility.events.PLControlEvent")] public class PLControlComboBox extends ComboBox implements IPLControlControl { /** * A flag that indicates whether the control need to refresh. */ protected var isNeedRefresh:Boolean = false; /** * A flag that indicates whether the value of control is changed. */ protected var isValueChanged:Boolean = false; /** * Constructor. */ public function PLControlComboBox() { super(); this.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); } /** * @private * override commitProperties for avoid dispatch event many times. */ override protected function commitProperties():void { super.commitProperties(); // &lt;---- line # 59 is here if(isNeedRefresh) { this.dispatchEvent(new PLControlEvent(PLControlEvent.VALUE_CHANGED)); isNeedRefresh = false; } if(isValueChanged) { this.dispatchEvent(new Event("PLControlComboboxChanged")); isValueChanged = false; } } /** * Add item's tooltip. * @private */ override public function set measuredWidth(value:Number):void { super.measuredWidth = value; if(collection &amp;&amp; collection.length &gt; 0) { ComboToolTipManager.showItemToolTip(this); } } protected function onCreationComplete(event:FlexEvent):void { this.removeEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); this.dispatchEvent(new PLControlEvent(PLControlEvent.INIT_COMPLETE)); } public function checkValidity():void { if(_required &amp;&amp; dataProvider &amp;&amp; dataProvider.length &gt; 0 &amp;&amp; _defaultItemIndex == selectedIndex) { _validity = false; errorString = "please select one"; } else { _validity = true; errorString = ""; } } // ====================================== // public function // ====================================== private function itemChanged():void { isNeedRefresh = true; isValueChanged = true; checkValidity(); } // ====================================== // properties // ====================================== private var _required:Boolean = false; private var _validity:Boolean = false; private var _defaultItemIndex:int = 0; public function get required():Boolean { return _required; } [Inspectable(defaultValue=false, category="Other")] public function set required(value:Boolean):void { _required = value; isNeedRefresh = true; checkValidity(); } [Bindable("PLControlComboboxChanged")] public function get controlValue():Object { return this.selectedIndex; } public function set controlValue(value:Object):void { if(value is Number) { this.selectedIndex = int(value); itemChanged(); } } /** * @copy IPLControlControl#validity */ public function get validity():Boolean { return _validity; } /** * @copy IPLControlControl#type */ public function get type():String { return PLControlTypeList.CONTROL_TYPE_COMBOBOX; } /** * If required is true, the default Item can not be selected. */ public function get defaultItemIndex():int { return _defaultItemIndex; } [Inspectable(defaultValue=0, type="Number", category="Other")] public function set defaultItemIndex(index:int):void { _defaultItemIndex = index; isNeedRefresh = true; checkValidity(); } /** * Override for check validity. */ override public function set selectedIndex(value:int):void { super.selectedIndex = value; itemChanged(); } /** * Override for check validity. */ override public function set selectedItem(value:Object):void { super.selectedItem = value; itemChanged(); } } } </code></pre> <p>Its coming from mx.controls.Comboxbox line # 1681 because tween is null.</p> <pre><code>private function destroyDropdown():void { if (inTween) tween.endTween();//&lt;---- exception on this line displayDropdown(false, null, false); } </code></pre> <p>Any suggestions of why this could be happening?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload