获取TypeError:错误#1009:无法访问空对象引用的属性或方法

时间:2010-04-13 06:57:00

标签: flex actionscript-3 mxml

我在flex桌面应用程序中创建了一个用于登录的小应用程序。我在其中引用webservice方法进行登录已经创建了Authentication类。现在我想为移动设备提供不同的Textinput值,为密码提供Textinput值。在我的身份验证类中。

为此我创建了mxml类的对象。使用这个我在My Action脚本类中获取移动没有值和密码值。

这是我的代码: -

SBTS.mxml文件

<?xml version="1.0" encoding="utf-8"?>

<!-- usingas/AccessingPackagedClasses.mxml -->


<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>


<![CDATA[
    public function login():void

{

var User:Authentication;

User = new Authentication();

User.authentication();

}

]]>

</mx:Script>

<mx:Panel width="100%" height="100%" layout="absolute">

<mx:TabNavigator width="100%" height="100%" id="viewstack2">
 <mx:Form label="Login Form" id="loginform">

<mx:FormItem label="Mobile no:">

<mx:TextInput id="mobileno"/>

</mx:FormItem>
  <mx:FormItem label="Password:">

<mx:TextInput displayAsPassword="true" id="password" />
  </mx:FormItem>

<mx:FormItem>

<mx:Button label="Login" click="login()"/>

</mx:FormItem>

</mx:Form>
   <mx:Form label="Child List">

<mx:Label width="100%" color="blue" 

text="Select Child."/>

</mx:TabNavigator>

</mx:Panel>
  </mx:WindowedApplication>

动作脚本类: -

package  src

{
  import adobe.utils.XMLUI;
 import generated.webservices.*;
  import mx.collections.ArrayCollection;
  import mx.controls.Alert;
import mx.rpc.events.FaultEvent; 
 public class Authentication

{

[Bindable]

private var childName:ArrayCollection;

[Bindable]
 private var childId:ArrayCollection; 

private var photoFeed:ArrayCollection;

private var arrayOfchild:Array;

private var newEntry:GetSBTSMobileAuthentication;

public var user:SBTSWebService;

 public var mxmlobj:SBTS;
 public function authentication():void

{
user =

new SBTSWebService();

if(user!=null)

{

user.addSBTSWebServiceFaultEventListener(handleFaults);

user.addgetSBTSMobileAuthenticationEventListener(authenticationResult);

newEntry =

new GetSBTSMobileAuthentication(); 
 if(newEntry!=null)

{

mxmlobj =

new SBTS();

if(mxmlobj != null)

{

newEntry.mobile = mxmlobj.mobileno.text; // Getting error here   error mention below

  newEntry.password= mxmlobj.password.text;

}

user.getSBTSMobileAuthentication(newEntry);

}

}

}
 public function handleFaults(event:FaultEvent):void

{

Alert.show(

"A fault occured contacting the server. Fault message is: " + event.fault.faultString);

}
public function authenticationResult(event:GetSBTSMobileAuthenticationResultEvent):void

{
if(event.result != null && event.result._return>0)

{

if(event.result._return > 0)

{

var UserId:int = event.result._return;

if(mxmlobj != null)

{

mxmlobj.loginform.enabled =

false;

mxmlobj.viewstack2.selectedIndex=1;

}

}
 else

{

Alert.show(

"Authentication fail");

}     

}

}


}

}

我收到此错误: -

  

TypeError:错误#1009:无法访问空对象引用的属性或方法。

     

at SBTSBusineesObject :: Authentication / authentication()[E:\ Users \ User1 \ Documents \ Fl ex Builder 3 \ SBTS \ src \ SBTSBusineesObject \ Authentication.as:35]

     

在SBTS / login()[E:\ Users \ User1 \ Documents \ Flex Builder 3 \ SBTS \ src \ SBTS.mxml:12]

     

在SBTS / ___ SBTS_Button1_click()[E:\ Users \ User1 \ Documents \ Flex Builder 3 \ SBTS \ src \ SBTS.mxml:27]

请帮我删除此错误。

1 个答案:

答案 0 :(得分:0)

因为MXML文件尚未添加到显示列表中。 Flash播放器是单线程的,不会以您的代码认为的方式暂停操作。 mobileno为null,因为该对象已创建,但没有任何子对象。