Я рассмотрел так много вопросов и ответов, но ничто из того, что я нашел, действительно сработало!AsyncTask не всегда вызывает, но когда он это делает, он имеет значение null?
Так что, если заголовок не помогает, то то, что я пытаюсь сделать, это запустить AsyncTask из диалогового окна, но оно не выполняется, и когда это произойдет, оно будет отображаться как нулевой объект, и если я «Честно говоря, это чертовски раздражает!
Так что если кто-то может помочь, тогда это будет здорово.
Класс подпалубный.
Вот класс Асинхронный:
static class UpdatePassword extends AsyncTask<String, String, String> {
Context context;
String oldPassword;
String newPassword;
public UpdatePassword(String setOldPassword, String setNewPassword, Context context) {
this.oldPassword = setOldPassword;
this.newPassword = setNewPassword;
this.context = context;
}
@Override protected String doInBackground(String... params) {
HttpRequestUtils httpRequestUtils = new HttpRequestUtils(context);
if (TextUtils.isEmpty(oldPassword) || TextUtils.isEmpty(newPassword)) {
return null;
} else {
String response = null;
String baseUrl = "rest/ws/user/update/password";
ApiResponse apiResponse = null;
try {
response = httpRequestUtils.getResponse(baseUrl + "?oldPassword=" + oldPassword + "&newPassword=" + newPassword, "application/json", "application/json");
if (TextUtils.isEmpty(response)) {
return null;
}
apiResponse = (ApiResponse) GsonUtils.getObjectFromJson(response, ApiResponse.class);
if (apiResponse != null && apiResponse.isSuccess()) {
return apiResponse.getStatus();
}
Log.i("Update", "password call" + apiResponse);
} catch (Exception e) {
e.printStackTrace();
}
return newPassword;
}
}
}
И вот что я делаю, чтобы выполнить его:
String oldPassword = changePassOld.getText().toString();
String newPassword = changePassNew.getText().toString();
AsyncTask task = new UpdatePassword(oldPassword, newPassword, ProfileFragment.this.getContext());
task.execute();
Edit: я заметил, что у меня есть только doInBackground
, но даже тогда, когда я был preExecute
, он все равно не сработает
вы отлажена свой postExecute) '' метод (? вы уверены, что нет возврата от 'doInBackground' –
Да, у меня есть и ничего не возвращает – user3125867
Тогда ваша проблема определенно находится в вашем корпусе' doInBackground', он может вернуть null, отладить его и посмотреть, где проблема! –