【发布时间】:2015-05-13 12:20:25
【问题描述】:
在我的 android 应用中,我有一个简单的 UI,其中包含两个元素(小部件):一个微调器,让用户可以选择 DAY_OF_WEEK 和一个 TimePicker,让他们选择一天中的时间和分钟 (AM/PM)。
这是用户界面:
如果用户更新其设置,可能会出现三种结果:
- 用户选择今天之前的一天(例如,如果今天是星期三,他们选择星期四或星期五等)。在这种情况下,一切都应该没问题。
- 用户选择今天之前的一天(例如,如果今天是星期三,他们选择星期二或星期一等)。在这种情况下,我需要弄清楚如何为所选日期设置闹钟,但下周!
- 用户选择了今天,但时间早于现在(例如,如果今天是星期三,他们选择今天并选择像凌晨 4 点这样的时间(现在是早上 6 点 54 分)。在这种情况下,我需要设置选定日期的闹钟(与今天同一天),但由于时间已经过去,我必须在下周完成。
我不知道为什么我在这里感到困惑,但这是我尝试编写的处理这种情况的代码:
int hour = Utils.getValueFromSharedPrefs(context.getString(R.string.hour_key), activity);
int minutes = Utils.getValueFromSharedPrefs(context.getString(R.string.minute_key), activity);
if (day >= Calendar.DAY_OF_WEEK){
if (hour >= Calendar.HOUR_OF_DAY){
calendar.set(Calendar.DAY_OF_WEEK, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minutes);
calendar.set(Calendar.SECOND, 0);
}else{
int diff = Calendar.DAY_OF_WEEK - day;
calendar.set(Calendar.DAY_OF_WEEK, Calendar.DAY_OF_WEEK + diff);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minutes);
calendar.set(Calendar.SECOND, 0);
}
}else{
calendar.set(Calendar.DAY_OF_WEEK, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minutes);
calendar.set(Calendar.SECOND, 0);
}
变量 day 是一个整数,相当于用户从微调器中选择的日期。
我的问题是:解决这个问题的最佳方法是什么?我只是想确保当用户选择 Today[WEDNESDAY] 并且时间少于现在时,我将日历设置为下周,因为那个小时已经过去了。当用户选择今天之前的一天 [例如 TUESDAY、MONDAY、SUNDAY] 时,也应如此 - 应将闹钟设置为所选日期的下周。
提前谢谢你。
【问题讨论】:
标签: java android alarm timepicker