You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将时间选择器选中的值保存到SharedPreferences中?

如何将时间选择器的值保存到SharedPreferences并恢复

不管是存整数还是字符串,核心是保证读写逻辑一致,以下是具体实现步骤:

一、保存选中的时间

当用户确认时间选择后,把值存入SharedPreferences:

方案1:分开存储小时和分钟(推荐,避免解析错误)

// 获取SharedPreferences实例,"TimePrefs"是自定义的存储文件名
SharedPreferences sp = getSharedPreferences("TimePrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();

// 从时间选择器获取选中的小时和分钟
int selectedHour = timePicker.getHour();
int selectedMinute = timePicker.getMinute();

// 写入数据
editor.putInt("saved_hour", selectedHour);
editor.putInt("saved_minute", selectedMinute);
// 提交保存,apply()是异步操作,比commit()更适合主线程
editor.apply();

方案2:存储为字符串格式

如果偏好存成"HH:mm"的字符串,代码如下:

SharedPreferences sp = getSharedPreferences("TimePrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();

int selectedHour = timePicker.getHour();
int selectedMinute = timePicker.getMinute();
String timeStr = String.format("%02d:%02d", selectedHour, selectedMinute);

editor.putString("saved_time", timeStr);
editor.apply();

二、启动应用时恢复时间

在Activity的onCreate方法中读取存储的值,设置回时间选择器:

对应方案1的恢复逻辑

SharedPreferences sp = getSharedPreferences("TimePrefs", MODE_PRIVATE);
// 第二个参数是默认值,比如初始设为0点0分
int savedHour = sp.getInt("saved_hour", 0);
int savedMinute = sp.getInt("saved_minute", 0);

// 把值设置给时间选择器
timePicker.setHour(savedHour);
timePicker.setMinute(savedMinute);

对应方案2的恢复逻辑

SharedPreferences sp = getSharedPreferences("TimePrefs", MODE_PRIVATE);
String savedTime = sp.getString("saved_time", "00:00");

// 拆分字符串得到小时和分钟
String[] timeParts = savedTime.split(":");
int savedHour = Integer.parseInt(timeParts[0]);
int savedMinute = Integer.parseInt(timeParts[1]);

// 设置回时间选择器
timePicker.setHour(savedHour);
timePicker.setMinute(savedMinute);

排查要点

  • 确保读写用的是同一个SharedPreferences名称(比如都是"TimePrefs")
  • 保存后必须调用apply()或commit(),否则数据不会持久化
  • 用字符串存储时,务必保证格式统一(比如补零),避免拆分解析时抛出异常

内容的提问来源于stack exchange,提问作者مجهول

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:12:34