我有这段简单的代码:
SharedPreferences settings = getSharedPreferences(Constants.USER_DETAILS, 0);
SharedPreferences.Editor editor = settings.edit();
//editor.putLong(Constants.USER_DETAILS_SIGNEDINON, registerResponse.getSignedInOn()); // signed in on
editor.putLong(Constants.USER_DETAILS_SIGNEDINON, 1); // signed in on
long test = settings.getLong(Constants.USER_DETAILS_SIGNEDINON, 2);
if (settings.edit().commit()) {
System.out.print("ok");
} else {
System.out.print("not ok");
}
你可以看到我一直在玩,以了解发生了什么。
所以,我检查了/ data / data / ...并且确实创建了首选项文件,但它是空的(只是Map标签)
测试long变量返回2,即使我之前将它设置为1。 提交返回true。
我错过了什么吗?
我设置了uses-permission android:name = android.permission.WRITE_EXTERNAL_STORAGE 虽然我相信只有在我真正做外部存储时才需要这样做。
的问候。 大卫。
答案 0 :(得分:3)
我遇到的一件事是,您无法继续调用pref.edit()并期望您的更改仍然存在。似乎每次调用pref.edit()都会产生一个新的编辑器(而不是单例)。
不会坚持:
pref.edit().remove("key"); // new editor created
pref.edit().commit(); // new editor created
将坚持:
Editor edit=pref.edit(); // new editor created
edit.remove("key"); // same editor used
edit.commit(); // same editor used
答案 1 :(得分:1)
试试这段代码。
SharedPreferences settings = getSharedPreferences(Constants.USER_DETAILS, 0);
SharedPreferences.Editor editor = settings.edit();
//editor.putLong(Constants.USER_DETAILS_SIGNEDINON, registerResponse.getSignedInOn()); // signed in on
editor.putLong(Constants.USER_DETAILS_SIGNEDINON, 1); // signed in on
if (editor.commit()) {
System.out.print("ok");
} else {
System.out.print("not ok");
}
long test = settings.getLong(Constants.USER_DETAILS_SIGNEDINON, 2);
答案 2 :(得分:0)
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); 0 - for private mode
Editor editor = pref.edit();
editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
// returns stored preference value
// If value is not present return second param value - In this case null
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email
editor.commit(); // commit changes
editor.clear();
editor.commit(); // commit changes