2012-05-09 78 views
0

閱讀了關於我的應用程序的一些統計數據後,我看到它需要一個多月的時間來更新我的用戶的75%。由於所有更新都非常重要,因此我想出了一個應用內警報,告訴用戶有一個待更新的更新。預期值,錯誤結果

存在一個包含實際應用版本(18)的文本文件,存儲在由DownloadText()方法獲取的網絡服務器中。這個數字將在isUpdatetxt之內,並且使用.substring(1, 3)從不可顯示的字符中提取。所以基本上只剩下「18」了。

但是我的問題是:isUpdatetxt == "18"返回false,當它不應該。

private class GetUpdate extends AsyncTask<Void, Void, Void> 
{ 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     Toast.makeText(getApplicationContext(), "Vérification de mise à jours", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    protected void onPostExecute(Void result) { 

     /** For debug reference*/ 
     Toast.makeText(getApplicationContext(), "*" + isUpdatetxt + "*" + " " + (isUpdatetxt.length()), Toast.LENGTH_LONG).show(); 
     if(isUpdatetxt == "18"){ 
      alertDialog.show(); 
     } 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     isUpdatetxt = DownloadText(updateURL); 
     isUpdatetxt = isUpdatetxt.substring(1, 3); 
     return null; 
    } 

} 
+0

只有一個辦法,找出爲什麼''isUpdatetxt'不使用不等於‘18’......找出它到底含有調試語句,日誌條目或其他一些機制。 –

+0

使用debuger讓我覺得我可以將我的號碼解析爲一個我應該先做的int。感謝您的時間:) – Kebekers

回答

6

如果您正在比較Java中的字符串,您應該使用.equals()。

當您將字符串與Java中的==進行比較時,您會比較引用。

所以,你的if語句將是這樣的:

if(isUpdatetxt.equals("18")){ 
    alertDialog.show(); 
} 
+0

多數民衆贊成在工作!感謝:) – Kebekers

+2

我喜歡關於C#的一些東西......'=='實際上可以像你期望的那樣處理字符串。 –