2016-07-06 155 views
0

我已经成功设置了闹钟应用程序,但当有多个闹钟时出现问题。它会覆盖之前选择的警报。设置多个闹钟

我应该对待接目标语句附近的MainActivity.java文件做什么修改?

我在网上搜索,他们说使用for循环递增挂起的intent id,但它不起作用。

任何帮助将是伟大的。这里是我的code.`

public void add() { 

    button_add.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Calendar calendar = Calendar.getInstance(); 
      calendar.set(Calendar.HOUR_OF_DAY, timepicker.getCurrentHour()); 
      calendar.set(Calendar.MINUTE, timepicker.getCurrentMinute()); 
      Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); 
       **PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);** 
       AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
       am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
       Toast.makeText(MainActivity.this, "the alarm is set for " + timepicker.getCurrentHour() + " : " + timepicker.getCurrentMinute(), Toast.LENGTH_SHORT).show(); 
       myDb.insertRow(timepicker.getCurrentHour().toString(), timepicker.getCurrentMinute().toString()); 

     } 
    }); 
} 

回答

4

您需要定义不同的ID对每个未决的意图,只要在下面的行变化不大 -

**PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);** 

在经过1代替只是通过独特的ID每个不同的警报。

public static int getAlarmId(Context context) { 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     int alarmId = preferences.getInt("ALARM", 1); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putInt("ALARM", alarmId + 1).apply(); 
     return alarmId; 
} 

希望它会工作:)

+0

我存储在ListView报警。你可以为我编辑代码吗?所以我会初始化一个变量并增加它并将其设置为唯一的ID?自昨天以来,我一直在努力挣扎。 –

+0

是的增量可以正常工作,或者你可以在1-58 PM在7月8日使用hhmmddmmyy int格式,如1358080714,所以它可以避免重复的警报,但是如果你不需要任何高级别的准确性,那么只需要增量: ) – Neo

+0

它不起作用。我初始化一个uniqueid变量= 1,* PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,uniqueid,intent,PendingIntent.FLAG_UPDATE_CURRENT);然后uniqueid ++ –