2013-03-01 83 views
0

我正在創建一個調度程序應用程序。在此我使用AlarmManagerPendingIntent設置了多個事件。我用下面的方法:使用PendingIntent的多個警報

在這裏我聲明PendingIntent陣列:

public static ArrayList <PendingIntent> intentArray= new ArrayList <PendingIntent>(); 

在這裏,我將意圖到數組:

PendingIntent pendingIntent = PendingIntent.getBroadcast(
     EditScheduleActivity.this, intentid, notifyintent, 
     PendingIntent.FLAG_UPDATE_CURRENT); //intent id is unique 

alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
     pendingIntent); 
MainActivity.intentArray.add(pendingIntent); 

我在這裏清除報警:

EditScheduleActivity.alarmManager.cancel(intentArray.get(selecteditemid_int)); 
intentArray.remove(selecteditemid_int); 

但是,當我清除報警,我得到一個ArrayIndexOutOfBoundsException,我認爲問題是當我重新啓動應用程序時,意圖數組列表被重新初始化並拋出異常。我如何通過保持意圖數組列表不被重新初始化來克服這個問題?

+0

SharePrefernece ..! – RobinHood 2013-03-01 05:12:20

+0

但是使用sharedpreference可以存儲意向數組嗎? – 2013-03-01 05:14:05

回答

-1

這與Android沒有什麼關係。一個ArrayOutOfBoundsException意味着,當你做:

intentArray.remove(selecteditemid_int); 

selecteditemid_int比陣列的長度。

+0

是的,這就是我所說的。當我重新啓動應用程序時,Intent數組被重新初始化。數組列表被清除。這就是爲什麼我得到的數組超出了綁定的異常。我需要保持意圖數組不被重新初始化。我該怎麼做? – 2013-03-01 05:15:43

0

我認爲問題是當我重新啓動應用程序意圖數組列表獲取重新初始化並拋出異常。

在你的情況,你必須使用Sharepreference or database,商店的ArrayList到shareprence同時intentArray.remove(selecteditemid_int);更新您的SP,那麼下一次它會給你上次存儲的值,請檢查下面的鏈接。

Using preference API in Android applications

Stackoverflow Answer