2012-05-09 15 views
0

私のアプリに関するいくつかの統計を読んだ後、ユーザーの75%を更新するのに1ヶ月以上かかることがわかりました。すべての更新が非常に重要なので、私は、更新が保留中であることをユーザーに知らせるアプリ内アラートを作成するようになりました。期待値、間違った結果

DownloadText()メソッドによって取得されたWebサーバーに格納されている実際のアプリケーションバージョン(18)を含むテキストファイルがあります。この番号は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

デバッグステートメント、ログエントリ、または他の何らかの仕組み。 –

+0

デバッガを使って私は私の番号を最初に行うべきintに解析できると思った。ありがとうございました:) – Kebekers

答えて

6

Javaで文字列を比較する場合は、.equals()を使用する必要があります。

Javaで文字列を==と比較すると、参照が比較されます。

だからあなたのif文のようなものになります: ` 'isUpdatetxt`それは本当に使用して含まれているものを『18』に等しい...調べるいない理由を見つけるための唯一の方法

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

それは動作します!ありがとう:) – Kebekers

+2

C#について気に入ったことの一つは... '=='は実際にあなたが期待するように文字列で動作します。 –