android - 如何知道使用sharedpreference在android中点击的最后一个按钮?
问题描述
我有两个按钮,现在我如何知道再次启动活动时使用 sharedpreference 单击的最后一个按钮?
编码:
私人共享偏好共享偏好;
SharedPreferences.Editor 编辑器;
在 onCreate 中初始化:
sharedPreferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
编辑器 = sharedPreferences.edit();
我试图这样做,但绝对错误的方式
if (sharedPreferences.getString("lamp", "on")) {
Toast.makeText(this, "onnnn", Toast.LENGTH_SHORT).show();
}
if (sharedPreferences.getString("lamp", "off")){
Toast.makeText(this, "offfff", Toast.LENGTH_SHORT).show();
}
第一个按钮
public void lampOff(View view) {
Log.d(tag, "lampOFF");
lamp_notConnected_Image.setVisibility(View.INVISIBLE);
lamp_Connected_Image.setVisibility(View.VISIBLE);
editor.putString("lamp", "off");
editor.commit();
}
第二个按钮:
public void lampOn(View view) {
Log.d(tag, "lampO");
lamp_notConnected_Image.setVisibility(View.VISIBLE);
lamp_Connected_Image.setVisibility(View.INVISIBLE);
editor.putString("lamp", "on");
editor.commit();
}
解决方案
问题在于您的情况if (sharedPreferences.getString("lamp", "on"))
,您没有将此字符串与任何内容进行比较,或者使用
if (sharedPreferences.getString("lamp", "on").equals("on"))
或者
将值保存为 boolean editor.putBoolean("lamp", true);
,然后您可以比较您的操作方式:if (sharedPreferences.getString("lamp", true))
注意这里(“lamp”,“on”)第一个参数是标识,第二个是默认值,以防那里还没有存储任何内容。
在SharedPreferences中查看更多信息
推荐阅读
- nginx - 基本 nginx server_name 设置问题(重定向 url)
- node.js - 如何使用switch case基于多个条件查询并根据聚合mongodb中的结果派生新字段?
- javascript - 将 JSON 字符串化的 JS 对象写入 excel 文件并保持格式
- python - 如何在 Python 中抑制 IDE 中的警告?(IDE 是 Jupyter)
- docker - 带有 Flutter web 的 localhost 无法与 docker 一起使用
- excel - 如何更改 VBA 数据验证下拉列表以禁止自定义用户输入?
- c# - foreach (列表中的示例项目)Json 只获取第一个项目?
- python - Python 定位不重复的特定单词
- highcharts - 尽管图例项单击已禁用,但单击 Highcharts 饼图呈现边框
- c# - 如何使用 Linq 检查 XML 中是否存在特定属性