У меня проблема с тем, что я не могу проверить значение результата AsyncTask, чтобы начать новую активность, если желателен результат.не удалось проверить результат AsyncTask
Вот мой onPostExecute метод:
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Toast.makeText(LoginActivity.this, s, Toast.LENGTH_SHORT).show();
}
Это поджаривает значение строки из файла PHP и имеет два возможных значения, «Вы успешно вошли в систему» или «Неправильный адрес электронной почты или пароль». Все работает нормально, пока я не хочу проверить, что такое тосты, потому что, если логин успешно, мне нужно начать новую деятельность.
Это, как я пытался сделать это:
public void onClick(View v) {
AttemptLogin login = new AttemptLogin();
try {
String res = login.execute("http://10.0.2.2/loginApp.php").get();
if (res.equals("You are successfully logged in"))
startActivity(new Intent(LoginActivity.this,ConnectActivity.class));
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
Я совершенно запутался, потому что, когда я тост Реза, я получаю желаемое сообщение, так что проблема с этой линией, если (res.equals («Вы успешно вошли в систему»)). Приложение ведет себя так, как будто эта строка вообще не существует.
Я также пробовал с if (AsyncTask.getStatus() == FINISHED), а затем проверить результат AsyncTask, но это не помогло.
У меня действительно нет идеи, что происходит, может ли кто-нибудь помочь мне с этим?
никогда не EVER! используйте '.get()' с задачей async, которая блокирует поток ui. Если вы хотите получить что-то из задачи async, используйте 'onPostExecute' или создайте обратный вызов, который запускается, когда ваша задача асинхронна завершена. – tyczj
Переместите' if (res.equals («Вы успешно вошли в систему»)) 'condition в' onPostExecute' а также удалить метод 'get()'. вероятно, проблема возникает из-за лишнего пробела в строке, поэтому попробуйте использовать 'contains' вместо' equals' –
Содержит работу, и я удалил условие в onPostExecute, как вы и Pier сказал. Большое спасибо. Я не могу поверить, что я потратил столько времени, пытаясь исправить это, и я не придумал, чтобы использовать contains вместо equals. Это довольно разочаровывает, но я все еще очень новичок в программировании adnroid, надеюсь, я улучшусь. Еще раз спасибо – MarkoDj