mx:states包含mx:AddChild 在切换时提示错误"TypeError: Error #1009: 无法访问空对象引用的属性或方法"的解决方法

    今天在写一段代码时,遇到了一个问题。
    代码的主要功能是将一系列数据在一个界面里用折线图表画出来,在另一个界面里用表格显示出来,我用<mx:states>实现这二者之间的切换,<mx:State name="chartViewState">对应用图表,另一个<mx:State name="dataGridViewState">对应表格,界面切换时用
 dataGrid1.dataProvider = pointArr;//pointArr是ArrayCollection类型的变量,存放要显示的数据
  turnToPage("dataGridViewState");//切换到dataGridViewState
来实现,本来不是很难,也很好理解,但运行时就报错,"TypeError: Error #1009: 无法访问空对象引用的属性或方法",提示dataGrid1.dataProvider = pointArr;这一行有问题,找了半天也不知道为什么,后来终于找到了原因。
    原来我的代码是这样写的:
<mx:states>
  <mx:State name="chartViewState" >
       ……
     <mx:AddChild position="lastChild">
       <mx:Panel  title="监 测 数 据 曲 线 图"  >
        ……
       </mx:Panel>
     </mx:AddChild>
  </mx:State>
  <mx:State name="dataGridViewState">
    <mx:AddChild position="lastChild">
      <mx:Panel  title="监 测 点 数 据 表">
        <mx:DataGrid id="dataGrid1" >

          ……
        </mx:DataGrid>
      </mx:Panel>
    </mx:AddChild>
  </mx:State>
</mx:states>

默认显示chartViewState, 切换到dataGridViewState之前 <mx:State name="dataGridViewState">标签内的<mx:AddChild ……并没有执行,而我在 turnToPage("dataGridViewState");之前 执行dataGrid1.dataProvider = pointArr;自然提示“无法访问空对象引用的属性或方法”,解决方法是只要把它们换过来就OK了:

 turnToPage("dataGridViewState");
 dataGrid1.dataProvider = pointArr;     

你可能感兴趣的:(mx:states包含mx:AddChild 在切换时提示错误"TypeError: Error #1009: 无法访问空对象引用的属性或方法"的解决方法)