0

null オブジェクト参照のプロパティまたはメソッドにアクセスできないのはなぜですか。

TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。barm/btn1_clickHandler()[C:\Users\Android\Adobe Flash Builder 4.6\barm\src\barm.mxml:32] で barm/__btn1_click()[C:\Users\Android\Adobe Flash Builder 4.6\barm\ src\barm.mxml:65]

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:service="services.service.*"
                   >
<fx:Script>
    <![CDATA[
        import com.adobe.serializers.utility.TypeUtility;
        import flash.sampler.DeleteObjectSample;    
        import flashx.textLayout.operations.DeleteTextOperation;
        import mx.collections.ArrayCollection;
        import mx.controls.Alert;
        import mx.events.FlexEvent;
        import spark.events.IndexChangeEvent;
        [Bindable]
        private var positionChoose:ArrayCollection = new ArrayCollection();
        protected function btn1_clickHandler(event:MouseEvent):void
        {
            // TODO Auto-generated method stub
            GetStrDataResult.token = service.GetStrData(
    "SELECT PositionCode,LocalDesc FROM StaffPosition 
    WHERE LocalDesc IN ('พนักงานขาย','Administrator','Trainner')","StaffPosition");
        var POS:Object ;            
        POS= GetStrDataResult.lastResult; 
    var savePosition:Array = new Array(POS.toString().split('|').length);
    var savePositionID:Array = new Array(POS.toString().split('|').length);
    var savePositionName:Array = new Array(POS.toString().split('|').length);
    var index:int;
    savePosition = POS.toString().split('|');
    for( index = 0; index < savePositionID.length; index++ )
            {
                savePositionID[index] = savePosition[index].split('^')[0];
            }

    for( index = 0; index < savePositionName.length; index++ )
            {
    savePositionName[index] = savePosition[index].split('^')[1];
    positionChoose.addItem(savePositionName[index]); 
            }
        }   
    ]]>
</fx:Script>
<fx:Declarations>
    <s:CallResponder id="GetStrDataResult"/>
    <service:Service id="service"
    fault="Alert.show(event.fault.faultString + '\n'+event.fault.faultDetail)"
                     showBusyCursor="true"/>

    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:DropDownList id="dropDownList" x="39" y="31" width="164"
                dataProvider="{positionChoose}"></s:DropDownList>
<s:Button id="btn1" x="132" y="64" label="Button"    
              click="btn1_clickHandler(event)"/>
</s:WindowedApplication>

null は POS です。How to POS は null ではありません。

var POS:Object;         
POS = GetStrDataResult.lastResult; 
var savePosition:Array = new Array(POS.toString().split('|').length);
4

2 に答える 2

0

エラーは、であるオブジェクトで何かを行おうとしているために発生しますnull

エラーメッセージは、問題が32行目にあることを示しています。投稿したコードを使用すると、次の行に相当します。{

しかし、その後の次の行にはおそらくnullオブジェクトがあると思います。

savePositionID[index] = savePosition[index].split('^')[0];

推測savePosition[index]はnullです。

ここでブレークポイントを設定し、デバッガーで値をトレースしたり、nullを明示的にチェックしたりすることを確認できます。

于 2012-06-01T07:36:04.263 に答える
0

サーバーがクエリの結果を返さないため、行が返されない可能性があります

POS= GetStrDataResult.lastResult; 

効果がありません。したがって、基本的に言うPOS.toString()と、ヌルポインター例外がスローされます!

于 2012-06-01T12:45:13.440 に答える