【问题标题】:How to set that 'past day of week' calculate as a 'next week of day' in calendar(Java.util) in Android Studio?如何在 Android Studio 的日历(Java.util)中将“过去一周”计算为“下一周”?
【发布时间】:2019-04-17 12:00:08
【问题描述】:

我想在一周中的某一天(例如星期日)设置闹钟。我知道该怎么做。

代码:

   if (!repeatDays.equals("")) {
                                    String[] repeatDays = this.repeatDays.split(",");
                                    String[] weekDays = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};
                                    if (intent == null) {
                                        for (int i = 0; i < weekDays.length; i++) {
                                            for (int k = 0; k < 1; k++) {
                                                if (weekDays[i].equals(repeatDays[k])) {
                                                    mCalendar.set(Calendar.DAY_OF_WEEK, i + 1);
                                                    mCalendar.set(Calendar.MONTH, mMonth);
                                                    mCalendar.set(Calendar.YEAR, mYear);
                                                    mCalendar.set(Calendar.HOUR_OF_DAY, mHour);
                                                    mCalendar.set(Calendar.MINUTE, mMinute);
                                                    mCalendar.set(Calendar.SECOND, 0);
                                                    new AlarmReceiver().createExactAlarm(getApplicationContext(), mCalendar, reminderId);
                                                }
                                            }
                                        }
                                    }
}

问题:假设今天是星期一,如果我要为一天中的所有其他时间设置闹钟,它就可以正常工作,但假设今天是星期六,如果我为之前的任何其他日子设置闹钟,例如星期一到星期五,警报管理器知道这是过去的一天,因此它会立即触发警报。但我想要的是,如果我什至选择过去的日子,它应该计算为下一周的那一天。这是我的要求。

注意:我根据当前系统日期设置星期几,从中我得到 mDate、年份和月份,并传入日历对象:

mDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());

【问题讨论】:

  • 请确保您使用的提醒 ID 与上一个不同。
  • 如果是今天的前一天,则在日历中添加 7 天因此警报将在同一天但一周后触发 mCalendar.add(Calendar.DATE, 7);
  • @DivyaSIngh 抱歉,Divya,我必须使用相同的 id,我正在做的是我调用 setExact,所以一旦第一个警报触发器假设在星期二并进入 onReceive,我为下一个预定日期,可能是星期五。
  • @arslanbenzer 请通过代码解释
  • @arslanbenzer 你能写一些代码吗?

标签: java android


【解决方案1】:

@Jimmy 为什么你需要使用相同的提醒 ID?虽然我们可以使用不同的 id 设置重复警报。也建议您使用挂起的缩进。 请通过以下给出的链接,这些链接与您的要求相同。希望这些能奏效!!

How can i get the repeat alarm for week days using alarm manager?

how to repeat alarm week day on in android

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多