SharedPreferences 在 apply() 之后更改设置值
SharedPreferences change set values after apply()
变量声明
public String am_PM1, am_PM2;
public static final String AM_PM1 = "";
public static final String AM_PM2 = "";
我有 2 个字符串值被放入 sharedPreferences,但在它们被放入并应用后,本例中的第二个值 AM_PM2
覆盖 AM_PM1
。如果我更改执行顺序并将 AM_PM2
放在 AM_PM1
之前,那么 AM_PM1
会覆盖第一个值。
Log.d("lol", "Value before 1: " + am_PM1);
Log.d("lol", "Value before 2: " + am_PM2);
editor.putString(AM_PM1, am_PM1);
editor.putString(AM_PM2, am_PM2);
editor.apply();
Log.d("lol", "" + sharedPreferences.getAll());
Log.d("lol", "Value after 1: " + sharedPreferences.getString(AM_PM1, ""));
Log.d("lol", "Value after 2: " + sharedPreferences.getString(AM_PM2, ""));
控制台输出截图:
第一次这样做,我没有意识到分配给变量的实际字符串值很重要。所以,如果你遇到这样的问题,请确保你没有像我一样傻,并且实际上已经为变量分配了一个字符串值。
public static final String AM_PM1 = "amPM1";
public static final String AM_PM2 = "amPM2";
SharedPreferences
使用 Key-Value 对来存储数据。如果您的密钥相同,则意味着每次写入一个值时,您都会覆盖前一个值。因此,当您尝试检索它们时,会给您意想不到的值。
AM_PM1 & AM_PM2 相等。删除 public static final String AM_PM1 = "";
& public static final String AM_PM2 = "";
这样做:
editor.edit().putString("AM_PM1", am_PM1).apply();
editor.edit().putString("AM_PM2", am_PM2).apply();
变量声明
public String am_PM1, am_PM2;
public static final String AM_PM1 = "";
public static final String AM_PM2 = "";
我有 2 个字符串值被放入 sharedPreferences,但在它们被放入并应用后,本例中的第二个值 AM_PM2
覆盖 AM_PM1
。如果我更改执行顺序并将 AM_PM2
放在 AM_PM1
之前,那么 AM_PM1
会覆盖第一个值。
Log.d("lol", "Value before 1: " + am_PM1);
Log.d("lol", "Value before 2: " + am_PM2);
editor.putString(AM_PM1, am_PM1);
editor.putString(AM_PM2, am_PM2);
editor.apply();
Log.d("lol", "" + sharedPreferences.getAll());
Log.d("lol", "Value after 1: " + sharedPreferences.getString(AM_PM1, ""));
Log.d("lol", "Value after 2: " + sharedPreferences.getString(AM_PM2, ""));
控制台输出截图:
第一次这样做,我没有意识到分配给变量的实际字符串值很重要。所以,如果你遇到这样的问题,请确保你没有像我一样傻,并且实际上已经为变量分配了一个字符串值。
public static final String AM_PM1 = "amPM1";
public static final String AM_PM2 = "amPM2";
SharedPreferences
使用 Key-Value 对来存储数据。如果您的密钥相同,则意味着每次写入一个值时,您都会覆盖前一个值。因此,当您尝试检索它们时,会给您意想不到的值。
AM_PM1 & AM_PM2 相等。删除 public static final String AM_PM1 = "";
& public static final String AM_PM2 = "";
这样做:
editor.edit().putString("AM_PM1", am_PM1).apply();
editor.edit().putString("AM_PM2", am_PM2).apply();