【问题标题】:Getting TypeError: Error #1009: Cannot access a property or method of a null object reference获取 TypeError:错误 #1009:无法访问空对象引用的属性或方法
【发布时间】:2011-02-07 07:51:16
【问题描述】:

我在 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:无法访问空对象引用的属性或方法。

在 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]

请帮我消除这个错误。

【问题讨论】:

  • 请用 pre, code 标签包装你的代码。在我看来,缺少一些 mxml 标记代码。
  • 这一定是我见过的最糟糕的代码格式!

标签: apache-flex actionscript-3 mxml


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2015-05-27
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多