看板 AndroidDev 關於我們 聯絡資訊
大家好,小弟最近嘗試做alarm manager,想使用intent來傳遞title跟text, 時間的設定是使用timepickerdialog,程式碼如下: private void alarmManager(Calendar calendarTime,int id) { if(id==0) intent.putExtra("contentText",decimalFormat.format(m_calendar.getTime().getHours())+" : " +decimalFormat.format(m_calendar.getTime().getMinutes())); else if(id==1) intent.putExtra("contentText",decimalFormat.format(e_calendar.getTime().getHours())+" : " +decimalFormat.format(e_calendar.getTime().getMinutes())); pendingIntent = PendingIntent.getBroadcast(this, id, intent, 0); if(calendarTime.before(now)) { calendarTime.add(Calendar.DATE,1); //如果時間早於現在就加一天 manager.setRepeating(AlarmManager.RTC_WAKEUP, calendarTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); calendarTime.add(Calendar.DATE,-1); //把加上去的日期扣回來 } else manager.setRepeating(AlarmManager.RTC_WAKEUP, calendarTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); } 這是我的程式碼,而我在broadreceiver那邊使用intent.getExtra("contentText") 來取值,但是發現一個很嚴重的問題是,當我重傳遞值過去時, 它顯示出來的依舊是我第一次設定的value,也就是說value沒辦法覆蓋新值, 想問一下是出了甚麼問題呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.84.155 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1501743144.A.0EF.html
ssccg: 看一下PendingIntent.getBroadcast第四個參數的說明吧 08/03 15:14
ssccg: PendingIntent的get系列方法在已經有(extra以外)相同intent 08/03 15:20
ssccg: 建立的PendingIntent存在時,就會回傳現有的 08/03 15:21
ssccg: 如果同時只需要一個但要更新extra可用FLAG_UPDATE_CURRENT 08/03 15:24
ssccg: 要多個的話必須用不同的intent或request code 08/03 15:25
pig98520: @@昨天試的時候update_current是失敗的,沒想到剛剛又成 08/03 16:05
pig98520: 功了,太感謝了^^ 08/03 16:06