2016-07-06 8 views
0

Ich habe erfolgreich eine Alarm-App eingerichtet, aber das Problem tritt auf, wenn mehrere Alarme vorhanden sind. Es überschreibt den zuvor ausgewählten Alarm.Mehrere Alarme einstellen

Welche Änderungen sollte ich an meine MainActivity.java Datei in der Nähe der ausstehenden Absichtserklärung vornehmen?

Ich suchte online, sie sagten, verwenden Sie eine for-Schleife, um die ausstehende Intent-ID zu erhöhen, aber es funktioniert nicht.

Jede Hilfe wäre großartig. Hier ist meine 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()); 

     } 
    }); 
} 

Antwort

4

Sie müssen unterschiedliche ID für jede ausstehende Absicht definieren, nur wenig ändern machen in der folgenden Zeile -

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

Anstelle der Weitergabe 1 nur eindeutige ID Pass für jeder andere Alarm

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; 
} 

Hoffe, es wird

+0

ich :) arbeiten in einer Listenansicht den Alarm am speichert. Kannst du den Code für mich bearbeiten? also initialisiere ich eine Variable und inkrementiere sie und setze sie als eindeutige ID? Ich kämpfe seit gestern darüber. –

+0

Ja Inkrement funktioniert gut, oder Sie können hhmmddmmyy int-Format wie 1358080714 für 8. Juli um 1-58 Uhr verwenden, so dass doppelte Alarme vermieden werden, aber wenn Sie keine hohe Genauigkeit benötigen, dann gehen Sie nur für Inkrement:) – Neo

+0

es funktioniert nicht. Ich initialisiere eine UniqueID-Variable = 1, * PendingIntent PendingIntent = PendingIntent.getBroadcast (MainActivity.this, uniqueID, intent, PendingIntent.FLAG_UPDATE_CURRENT); und dann uniqueid ++ –

Verwandte Themen