android - 为什么我的 SharedPreferences 在按钮单击时不保存?
问题描述
所以我试图向我添加一些值,SharedPreferences
但每次我点击按钮时,它都会使用默认值,00
所以我的 if 语句总是返回 true,即使它不应该。
private static final String SHARED_FREFS = "sharedPrefs";
private static final String STATE = "state";
这是按钮点击事件
public void onClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_FREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
int currentTime = Calendar.getInstance().getTime().getMinutes();
String eh = sharedPreferences.getString(STATE, "00");
if(!Integer.toString(currentTime).equalsIgnoreCase(sharedPreferences.getString(STATE, "00"))){
GetData();
editor.putString(STATE, Integer.toString(currentTime));
Log.e("ATTENTION!:", "METHOD HAS BEEN FIRED!");
}
}
});
我正在尝试将当前分钟存储在那里,但它没有这样做。我是否需要一个名为 data 的文件夹,其中包含一个名为 xml 的文件sharedPrefs
?
解决方案
为什么我的 SharedPreferences 在按钮单击时不保存?
因为您忘记将更新保存在您的SharedPreferences
您需要使用editor.apply();
或editor.commit();
添加数据后SharedPreferences
样本
public void onClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_FREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
int currentTime = Calendar.getInstance().getTime().getMinutes();
String eh = sharedPreferences.getString(STATE, "00");
if(!Integer.toString(currentTime).equalsIgnoreCase(sharedPreferences.getString(STATE, "00"))){
GetData();
editor.putString(STATE, Integer.toString(currentTime));
editor.apply();
Log.e("ATTENTION!:", "METHOD HAS BEEN FIRED!");
}
}
});
推荐阅读
- flutter - 如何像在音乐播放器中一样在 Flutter 中创建自定义通知并处理按钮点击
- java - 无法将 ssl 密钥导入到 cacerts keytool
- java - @ComponentScan 在外部 jar 中找不到 bean。可以吗?
- c# - CalendarDatePicker 有两种阴影背景
- python - AttributeError:“zip”对象没有属性“ndim”
- asp.net-core - 卡在不显眼的客户端验证中
- sql-server - 使用子查询插入多行
- azure-devops - 在公共扩展中重命名已发布的任务
- flutter - 小部件中的颤振相机预览,而不是全屏
- webpack - Babel 使用箭头函数创建 IIFE