【发布时间】:2017-12-02 01:40:12
【问题描述】:
我正在使用带有retrofit2.0 的rest 来处理android 项目中对象的更新细节。在我调用编辑方法后,我得到一个肯定的响应,我的更改正在保存,但是在将它保存在共享首选项中并尝试从中获取它时,我得到了旧的未更改数据并在数据库中检查它的旧数据(休息服务工作得很好,我用邮递员测试过)。
这是我的代码:
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);
}
问题是根本没有异常或崩溃,我无法弄清楚错误。
【问题讨论】:
-
您好,您是否尝试过使用 prefsEditor.apply();而不是 prefsEditor.commit();我在使用改造时使用应用。
-
显示
getPreferences方法 -
它的
getUserShrdPref()方法 -
可能是竞争条件。 nom、prenom、address 等在哪里设置?
-
@MeknessiHamida 向我们展示
editUser方法。
标签: android sharedpreferences gson