public class UserLoginTask extends AsyncTask<Void, Void, Boolean> {
// Flag for login flow
private boolean flag = true;
private final String mEmail;
private final String mPassword;
UserLoginTask(String email, String password) {
mEmail = email;
mPassword = password;
}
@Override
protected Boolean doInBackground(Void... params) {
mKinveyClient.user().login(mEmail, mPassword, new KinveyUserCallback() {
@Override
public void onSuccess(User user) {
CharSequence text = "Welcome back," + user.getUsername() + ".";
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Throwable t) {
CharSequence text = "Wrong username or password.";
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
flag = false;
}
});
return flag;
}
@Override
protected void onPostExecute(final Boolean success) {
mAuthTask = null;
showProgress(false);
if (success) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
} else {
mPasswordView.setError(getString(R.string.error_incorrect_password_or_username));
mEmailView.setText("");
mPasswordView.setText("");
mEmailView.requestFocus();
}
}
@Override
protected void onCancelled() {
mAuthTask = null;
showProgress(false);
}
}
Мне нужен метод для возврата true или false на основании того, был ли пользователь успешно зарегистрирован или нет. Однако значение flag
не изменяется в пределах метода onFailure
.Вход с использованием LoginActivity и Kinvey