2011-12-13 148 views
1

我是新來android和java編程,我有一個應用程序,觸發多個鬧鐘,並重復他們每一天。它工作正常,但我的問題是,當我刪除它繼續發射第二天的警報。他們告訴我使用方法取消和我創造了這個功能:如下取消鬧鐘

public void deleteReminder(Long reminderId){ 
    Intent d = new Intent(mContext, Daily_OnAlarmReceiver.class); 
    d.putExtra(RemindersDbAdapter.KEY_ROWID_DAILY, (long)reminderId); 

    int Daily_requestCode = reminderId.intValue(); 


    PendingIntent pid = PendingIntent.getBroadcast(mContext, Daily_requestCode, d, PendingIntent.FLAG_CANCEL_CURRENT); 

    mAlarmManager.cancel(pid); 
} 

我的設置提醒功能:

public void setReminder(Long reminderId, Calendar when) { 

     Intent i = new Intent(mContext, Daily_OnAlarmReceiver.class); 
     i.putExtra(RemindersDbAdapter.KEY_ROWID_DAILY, (long)reminderId); 
     int Daily_requestCode = reminderId.intValue(); 

     PendingIntent pi = PendingIntent.getBroadcast(mContext, Daily_requestCode, i, PendingIntent.FLAG_CANCEL_CURRENT); 
     mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 
} 

兩者都被放置在AlarmManager.java文件。

下面的代碼是隻從列表中刪除報警另一個Java文件,但它不阻止系統發射報警:

public boolean onContextItemSelected(MenuItem item) { 
      switch(item.getItemId()) { 
      case R.id.menu_delete: 

      AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
       mDbHelper.deleteDailyReminder(info.id); 
       fillData(); 
       return true; 
     } 
      return super.onContextItemSelected(item); 
     } 

我的問題是如何在以前的代碼中調用這個new Daily_ReminderManager(this).deleteReminder(mRowId);所以提醒將從列表中和警報管理器中刪除。

,我想知道如果我的第一個代碼是正確的

回答

0

爲了取消報警通過filterEquals(..)定義Intents必須匹配。

這意味着intents動作,數據,類型,類和類別必須相同。在這個比較中不使用額外的數據。

+0

如何在我的情況下使用filterEquals? – zoza 2011-12-13 19:00:00