以下代码是处理SharedPreference中两个变量的存在的代码段。当我第一次运行应用程序时,它成功保存了vars的值。(editor.commit返回TRUE)。当我退出应用程序并重新启动时, settings.contains无法找到我在第一次运行时创建的两个vars / keys,共享首选项。结果我的应用程序创建了另一个值,这不应该(转到其他条件)。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences settings =
PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor=settings.edit();
if (settings.contains("passug1"))
Passug1=settings.getString("passug1","");
else {
sendJson1();
editor = settings.edit();
//sendJson1();
editor.putString("passug1", Passug1);
if (editor.commit())
System.out.println("Successfully saved");
else
System.out.println("Not saved");
//editor.apply();
}
if (settings.contains("passug2"))
Passug2=settings.getString("passug2","");
else
{
sendJson2();
editor = settings.edit();
//sendJson2();
editor.putString("passug2", Passug2);
if (editor.commit())
System.out.println("Successfully saved");
else
System.out.println("Not saved");
//editor.commit();
//editor.apply();
}
答案 0 :(得分:0)
在测试代码后,在我看来,为什么没有保存到您的偏好设置的唯一原因是因为您的Passug1
和Passug2
字段为空,因此您将空值保存到首选项。将空值传递给putString
实际上会删除该键的所有现有值。如果您的sendJson1()
和sendJson2()
方法意图为Passug1
和Passug2
分配值,则应检查它们是否正常运行。
其次,您在代码中使用System.out.println
,这通常不会在正常的logcat Android日志系统中输出任何内容,这可能会使您难以确定代码是否正常工作。您应该使用android.util.Log
类中的方法来进行日志记录。
最后,您对settings.edit()
的初始调用是多余的。