在我的Android应用程序中,我有一个带有两个元素(小部件)的简单UI:一个微调器,允许用户选择DAY_OF_WEEK&一个TimePicker让他们选择时间和分钟(上午/下午)。
以下是用户界面:
如果用户更新其设置,则有三种可能的结果:
我不知道为什么我在这里感到困惑,但这里是我试图编写的代码来处理这种情况:
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是用户从微调器中选择的日期的等效整数。
我的问题是:解决这个问题的最佳方法是什么?我只想确保当用户选择今天[WEDNESDAY]并且时间少于现在时,我将下一周的日历设置为该小时已经过去。当用户选择今天前一天[例如星期二,星期一,星期日]时,情况也应如此 - 警报应设置为所选日的下周。
提前谢谢。
答案 0 :(得分:1)
根据我的说法,将所有日历值转换为时间戳,对其进行数学计算,然后将其转换回来,这总是一个好主意。
让您更轻松。