Объект не сохраняется в общих настройках
Я работаю над обновлением деталей объекта в проекте Android, используя отдых с retrofit2.0. После вызова метода редактирования я получаю положительный ответ, что мои изменения сохраняются, но, сохраняя его в общих предпочтениях и пытаясь получить его, я получаю старые неизмененные данные и проверяю в базе данных старые данные (остальные службы работают просто отлично, я проверял это с почтальоном).
это мой код:
public void editUser(){
user.setNom(nom);
user.setPrenom(prenom);
user.setAdresse(adresse);
user.setTel(telephone);
apiService = RestService.createService(SolarAPIService.class);
Call<String> call = apiService.editUser(nom,prenom,adresse,telephone,user.getIdUser());
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if(response.body().isEmpty()){
Snackbar.make(layout, "OOps modification non autorisée !", Snackbar.LENGTH_LONG).show();
}else{
save(user);
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Snackbar.make(layout, "OOps!!!!!", Snackbar.LENGTH_LONG).show();
}
});
}
Это где редактирование вызывается
valider.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editUser();
phoneView.setText(""+user.getTel());
adrView.setText(user.getAdresse());
nomV.setText(user.getNom()+" "+user.getPrenom());
mailV.setText(user.getLogin());
getUserShrdPref();
Snackbar.make(layout, "Changement effectué avec sucess !!"+user.getAdresse(), Snackbar.LENGTH_LONG).show();
}
});
И это сохранить и getSharedPrefernces
public void save(User user) {
mPrefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(user);
prefsEditor.putString("user", json);
prefsEditor.commit();
}
public void getUserShrdPref() {
Gson gson = new Gson();
String json = mPrefs.getString("user", "");
user = gson.fromJson(json, User.class);
}
Проблема в том, что нет никаких исключений или вообще ничего не падает, я не могу понять ошибку.
2 ответа
Может быть состояние гонки. Проверьте, где заданы nom, prenom и эти поля. знак равно
Преобразование JSON в строку - это процесс, требующий времени. Согласно вашему коду, обновление общих настроек находится чуть ниже кода преобразования json. Существует возможность выполнить совместное обновление префа перед преобразованием в json.
Таким образом, лучшим решением является использование асинхронной задачи для этого преобразования и обновление общих настроек в onPostExcecute(). Это может решить вашу проблему. Пожалуйста, попробуй.
Ссылка для ссылки: https://developer.android.com/reference/android/os/AsyncTask.html