2011-08-18 114 views
0

在模擬器中測試我的應用程序時,我的應用程序運行完美。但在真實設備上,我得到爲空的爲BasicEditField,所以我無法執行我的應用程序。以下是我的代碼片段。Blackberry設備上BasicEditField中的空值

public class Login extends MainScreen { 

    private UiApplication application = UiApplication.getUiApplication(); 
    private BasicEditField _email = null; 
    private PasswordEditField _pwd = null; 
    private ButtonField login = null; 
    String imei = GPRSInfo.imeiToString(GPRSInfo.getIMEI(), false); 

    public Login(){ 

     try { 
      _email = new BasicEditField("Email: ", "", 100, EditField.NO_NEWLINE); 
      _email.setFont(font); 
      add(_email); 

      _pwd = new PasswordEditField("Password: ", "", 100, EditField.NO_NEWLINE); 
      _pwd.setFont(font); 
      add(_pwd); 

      login = new ButtonField("Login", ButtonField.CONSUME_CLICK); 
      login.setChangeListener(new FieldChangeListener() { 
       public void fieldChanged(Field field, int context) { 
        String e = _email.getText(); 
        String xmlUrl = "http://********:9090/com.infra.rest/rest/todo?email='"+ e +"'&dId='"+ imei +"';deviceside=true"; 

        String[][] urlData = XmlFunctions.getUserFromXml(xmlUrl); 
       } 
      }); 
      login.setFont(font); 
      add(login); 
     } catch (Exception e) { 
      System.out.println("Failed to create user interface components"); 
     } 
    } 
} 

在檢查電子郵件和IMEI值,我得到NULL和異常說法 「的toString」 有特色 「()Ljava /朗/字符串;」不適用於此物體

這是一整天,但我無法克服這個問題。

+0

你認爲哪行是null? – jprofitt

+0

@jprofit:我在String e = _email.getText(); ** e **的值爲空 –

+0

我不認爲這是可能的。 AFAIK getText()總是返回一個非空值。 –

回答

1

我懷疑它與從匿名內部類訪問非靜態外部類字段有關。請嘗試:

String e = Login.this._email.getText(); 

請仔細閱讀this wikipedia page

相關問題