2013-04-18 51 views
-1

我有一個EditText字段代表一個ID號。該字段可以以編程方式填充,使用基於卡片刷卡結果的IDField.setText(String),也可以使用鍵盤手動填充。Android EditText內容爲空,即使顯示文本

一旦文本被填充,兩種方法(基於滑動的自動登錄 - 或基於按鈕單擊的手動 - )都運行相同的登錄腳本。但是,當我去抓住EditText字段的內容時,如果我手動編輯文本,我會返回一個空字符串。如果文本是以編程方式設置的,那麼它完美地工作。

這對我沒有任何意義。 editText.getText()。toString()不會返回文本框中可見的內容嗎?

XML:

<Button 
    android:id="@+id/btn_swipeCard" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/signInID" 
    android:layout_toLeftOf="@+id/textView1" 
    android:onClick="SignInStudent" 
    android:text="Swipe ID" /> 

按鈕初始化:

IDField = (EditText) layout.findViewById (R.id.signInID); 
LoginButton = (Button) findViewById(R.id.button1); 
LoginButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { SignInStudent(); } }); 

刷卡:

// displays data from card swiping 
private Runnable doUpdateTVS = new Runnable() 
{ 
    public void run() 
    { 
     try 
     { 
      //Grab ID Number 
      String[] splitMSG = strMsrData.split("="); 
      //txtIDNumber.setText(splitMSG[2]); 
      IDField.setText(splitMSG[2]); 
      StringBuffer hexString = new StringBuffer(); 
      hexString.append("<"); 
      String fix = null; 
      for (int i = 0; i < msrData.length; i++) { 
       fix = Integer.toHexString(0xFF & msrData[i]); 
       if(fix.length()==1) 
        fix = "0"+fix; 
       hexString.append(fix); 
       if((i+1)%4==0&&i!=(msrData.length-1)) 
        hexString.append(' '); 
      } 
      hexString.append(">"); 
      myUniMagReader.WriteLogIntoFile(hexString.toString()); 

      SignInStudent(); 
     } 
     catch(Exception ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 
}; 

登錄邏輯:

public void SignInStudent() 
{ 
    String temp = "http://wwww.tempUrl.com/signIn?ID="+ IDField.getText().toString() + "&DeviceId="+KEY; 
    webView.loadUrl(temp); 
} 
+0

發佈您的代碼... – Pragnani

+0

請使用您的代碼進行編輯?肯定你在代碼中有一些錯誤.. – SRam

+0

發佈你的佈局xml以及.. – Akhil

回答

-1

佈局僅在循環的onCreate階段更新。在調用onResume事件時也會觸發此事件,這就解釋了在鎖定和解鎖設備後字段更新的原因。有幾個解決方法,比如做更多的後臺處理,然後用正確的值創建一個新的視圖,或者使用一個允許在程序處於正常執行週期時進行繪製的surfaceView。

對於我的應用程序,我要麼做後臺處理,然後移動到新的視圖,或者有一個視圖只是不斷調用自己來讓onCreate事件再次觸發。解決方案取決於應用程序,但這就是問題出現的原因。