Объект не сохраняется в общих настройках

Я работаю над обновлением деталей объекта в проекте 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

Другие вопросы по тегам