【发布时间】:2019-12-06 15:01:22
【问题描述】:
我在 android 应用程序中有一个选项可以设置两个通知。基本上,当用户单击按钮时,将显示一个时间选择器,在第一次选择器完成后,会弹出第二个选择器供用户插入第二次。
两个时间选择器在不同的方法中,在第一个方法的末尾显示一个 toast,与第二个方法相同。问题是当第一次选择器完成两个 toast 消息时立即触发,然后当用户完成第二次选择器时,第二个 toast 消息再次触发。我已经包含了下面的代码。
/**
* Method which sets the first daily notification
*/
private void startTwiceDailyNotification(Calendar c) {
DialogFragment timePicker = new TimePickerFragment();
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlertReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
Toast.makeText(this, "First Notification Set.", Toast.LENGTH_SHORT).show();
timePicker.show(getSupportFragmentManager(), "time picker4");
hasSelected = 2;
}
/**
* Method which sets the second daily notification
*/
private void startTwiceDailyNotification2(Calendar c) {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlertReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 2, intent, 0);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
Toast.makeText(this, "Second Notification Set.", Toast.LENGTH_SHORT).show();
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
if (hasSelected == 1) {
startTwiceDailyNotification(calendar);
}
if (hasSelected == 2) {
startTwiceDailyNotification2(calendar);
}
}
【问题讨论】:
-
hasSelected = 2;设置为 2,因此调用了第二个。