2011-07-22 17 views
2

私はアンドロイドの開発を学んでいます。私は正常にログインクラスを作ることができました。私のアプリケーションは自分のmysqlデータベースをチェックして、ユーザの詳細がDBに存在するかどうかを確認します。 PHPファイルの記事のいずれか、「正しい」ユーザーの詳細は、「正しくない」DBまたはAndroidの文字列.equalsメソッドが動作しない

private void checkResult(){ 
    if(getResults().equals("correct")){ 
      //do some stuffs 

    } 
    else{ 

     displayDialog(getResults()); 
    } 
} 

getResults()メソッド内に存在する場合は、文字列(サーバからの応答)を返します。しかし、文字列の比較は動作していないように見えます。なぜなら、サーバーが応答として「正しい」を返すと、if条件が常にfalseになるからです。私は、以下の方法を使って、false文が実行されるが、alertDialogのmsgは "正しい"ことを確認した。誰でも助けてください、なぜかコードの動作が分からないようです。

public void displayDialog(String msg){ 

    AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
    alertDialog.setTitle("Authetication Failed!"); 
    alertDialog.setMessage(msg); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // do something when the user presses OK (place focus on weight input?) 
     } 
    }); 
    alertDialog.setIcon(R.drawable.icon); 
    alertDialog.show(); 

} 

答えて

5

私は前に同じ問題を抱えていました。代わりにgetResults().trim().equals()を試してください。

+0

ありがとうございます。vicki D ..これは、equalsの前に.trim()を追加すると動作します。しかし理由を理解していないが、ありがとう、私は今すぐ進むことができます:D – fizo07

+1

喜んで助けてください。私は、他の人が示唆しているように、いくつかの不可視の文字が文字列に追加されていると推測しています。 – Pikaling

5

文字列に「見えない」文字が含まれていることが強く疑わしいです。 Unicode U + 0000またはおそらく改行。

私はあなたが文字列の長さと各文字のUnicode値をロギングすることで、これを診断するお勧め:

String results = getResults(); 
for (int i = 0; i < results.length(); i++) 
{ 
    // Whatever the relevant log call is 
    log("Got character: " + (int) results.charAt(i)); 
} 

それは、これはそのString.equalsが本当に壊れているよりも問題であることはるか可能性が高いようです。

0

おそらく応答には<br blaa bla htmlタグが含まれている可能性があります。それが私の最初のことです。出力を記録します。 Log("RESPONSE", getResults());

+0

ログからの出力も「正しい」 – fizo07

関連する問題