0

私は Web サービスを使用して値を取得し、長い話を短くします。Web サービスから値を取得できます。この場合、strVersion の値は 1 です (レコードが 1 つしかないため、for ループは 1 つのレコードのみを返します)。

ここに問題があります。結果は常に「OK: 1」ではなく「Wrong: 1」を返します。誰か理由を教えてください。このフィールドの MYSQL のデータ型は Varchar です。

    AndroidHttpTransport aht = new AndroidHttpTransport(URL);
    aht.call(SOAP_ACTION, soapEnvelope);
    SoapObject resultString = (SoapObject) soapEnvelope.getResponse();

    final String[] strVersion = new String[resultString.getPropertyCount()];

    for(int i =0; i<resultString.getPropertyCount(); i++)
    {
        SoapObject array = (SoapObject) resultString .getProperty(i);
        strVersion[i] = array.getProperty(0).toString();                    
        if(strVersion[i] == "1")
        {
        Toast.makeText(getApplicationContext(), "OK: " + strVersion[i], Toast.LENGTH_SHORT).show();
        }
        else
        {
             Toast.makeText(getApplicationContext(), "Wrong: " + strVersion[i], Toast.LENGTH_SHORT).show();
        }
    }
4

1 に答える 1

4

Stringを使って比較しますequals()

これを変える:

if(strVersion[i] == "1")

if(strVersion[i].equals("1"))

詳細については、これをお読みください。

==値ではなく参照を比較します。あなたの場合、参照の等価性ではなく、値の等価性をチェックしたいと考えています。

于 2012-06-20T03:06:33.147 に答える