2016-07-06 145 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 ++ –