2016-04-13 7 views
2

Ich versuche, ein Bündel durch eine ausstehende Alarmabsicht zu senden, aber die parzellierbaren Daten scheinen immer Null zu sein. Der varicable hsr ist ein Parcelable-Objekt. Hier ist mein Code:Absicht gesendet durch Alarm PendingIntent hat ein Null Parcelable im Bundle

for (final HolderSubjectReminder hsr : alHolderSubjectReminders) { 


    int hours = 23; 
    int minutes = 0; 
    DateTime alarmDate = new DateTime().dayOfMonth().roundFloorCopy().plusHours(hours).plusMinutes(minutes); 
    Intent intent = new Intent("com.mycompany.ediary"); 
    Bundle bundle = new Bundle(); 
    bundle.putParcelable("Reminder", hsr); 
    intent.putExtras(bundle); 

    pendingIntent = PendingIntent.getBroadcast(con, count, intent, 0); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, alarmDate.getMillis(), pendingIntent); 
} 

in meinem BroadcastReceiver (die die Sendung zur richtigen Zeit erhält):

@Override 
    public void onReceive(Context context, Intent intent) { 

     Bundle bundle = intent.getExtras(); //not null 
     if (bundle != null) { 

      HolderSubjectReminder hsr = bundle.getParcelable("Reminder"); //null 
      if (hsr != null) { 
       subjectReminders.shouldWeShowAlert(hsr); 
      } 
     } 
    } 

Die Variable HSR ist immer null, wenn es in dem Rundfunkempfänger abgerufen. Was mache ich falsch? Das Bündel ist übrigens auch nicht null.

+0

Was ist HSR? Ist es zu etwas initialisiert? – Francesc

+0

@Francesc aktualisierte Antwort –

Antwort

0

Vielleicht erstellen Sie ausstehende Absichten mehr als diejenigen in Ihrer App. In diesem Fall sollten Sie verwenden, PendingIntent.FLAG_CANCEL_CURRENT die Absicht von Grund auf neu zu erstellen und aufblasen Ihrem Paket enthalten:

Beispiel:

pendingIntent = PendingIntent.getBroadcast(con, count, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

Flagge Info:

http://developer.android.com/intl/es/reference/android/app/PendingIntent.html#FLAG_CANCEL_CURRENT

+0

Danke! Das war's!! –

Verwandte Themen