SharedPreferences总是在我现有的应用程序中获得默认值,但是在创建新应用程序时可以 [英] SharedPreferences always get default value in my existing app but when created new app its ok
问题描述
SharedPreferences在一个现有应用程序中无法正常工作.我尝试了许多不同的方法,但仍然无法正常工作.始终使用默认值重新启动应用程序.
SharedPreferences doesn't work correct in one existing apps. I tried many different ways but still not working. Always get default values app start again.
- 当我在创建的新应用中使用相同的代码时,它就可以正常工作.
- 它正在使用所有其他现有应用程序.
你知道为什么吗?
String default_user = "Default_User";
SharedPreferences pref = this.getSharedPreferences("TEST_SHAREDPREF", MODE_PRIVATE);
String user = pref.getString("user", default_user);
Log.d("SHARED CHECK", user);
if (user.equals(default_user)) {
SharedPreferences.Editor edit = pref.edit();
edit.putString("user", "new_user");
boolean ok = edit.commit();
user = pref.getString("user", default_user);
Log.d("SHARED WRITE", user);
Toast.makeText(this, user + " Save process: " + ok, Toast.LENGTH_LONG).show();
} else {
Log.d("SHARED READ", user);
Toast.makeText(this, "READ SharedPrefs: " + user, Toast.LENGTH_LONG).show();
}
编辑:记录结果
那个块总是返回这个错误的应用程序,我不知道为什么
that block always return this for which is incorrect app and I don't know why
//first run
SHARED CHECK Default_User
SHARED WRITE new_user
//each time after first
SHARED CHECK Default_User
SHARED WRITE new_user
该块始终返回所有应用程序
That block always return this for which are all apps
//first run
SHARED CHECK Default_User
SHARED WRITE new_user
//each time after first
SHARED CHECK new_user
SHARED READ new_user
推荐答案
最后,我解决了这个问题. 其他开发人员之一添加了一种方法. 此方法已删除data/data/packageName文件夹下的所有文件(libs文件夹除外). 我认为他们尝试删除缓存文件夹.
Finally I solved that problem. A method was added by one of other developers. All files under data/data/packageName folder except libs folder were being deleted by this method. I think they tried delete cache folder.
删除了此方法并解决了.
Removed this method and it solved.
这篇关于SharedPreferences总是在我现有的应用程序中获得默认值,但是在创建新应用程序时可以的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!