Android строка .equals метод не работает - PullRequest
2 голосов
/ 23 июля 2011

Я учусь разработке Android. Я был в состоянии успешно создать класс входа в систему, который мое приложение проверяет мою базу данных mysql, чтобы видеть, существуют ли данные пользователя в БД. Файл php выдает либо «правильный», если данные пользователя существуют в БД, либо «неправильный»

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

    }
    else{

        displayDialog(getResults());
    }   
}

Метод getResults () возвращает строку (ответ от сервера). Однако сравнение строк, похоже, не работает, потому что, когда сервер возвращает «правильное» в качестве ответа, условие if всегда оказывается ложным. Я подтвердил, что с помощью метода, приведенного ниже, выполняется ложное утверждение, но сообщение в alertDialog является «правильным». Пожалуйста, кто-нибудь может помочь, кажется, не может понять, почему код плохо себя ведет.

    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();

}

Ответы [ 3 ]

5 голосов
/ 23 июля 2011

Я сильно подозреваю, что строка содержит «невидимые» символы, например 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 действительно сломан.

5 голосов
/ 23 июля 2011

У меня была такая же проблема раньше. Попробуйте getResults().trim().equals() вместо

0 голосов
/ 23 июля 2011

Возможно, ответ содержит несколько <br бла-бла тегов html.Это мой первый опыт.Зарегистрируйте вывод.Log("RESPONSE", getResults());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...