2012-06-12 2 views
1

В моей основной деятельности у меня есть метод setRepeatingAlarm(), чтобы установить Alarms, когда приложение загружается первым. Этот метод успешно устанавливает Alarms путем циклического перехода по столбцу и получения целочисленного значения из каждой строки таблицы SQLite. Вот метод в основные:Я не могу отменить Alarms/PendingIntents в Android

for (int i : AlarmDays) { 


     Calendar cal = Calendar.getInstance(); 
     if (cal.get(Calendar.MINUTE) >= i) 
      cal.add(Calendar.HOUR, 1); 
     cal.set(Calendar.MINUTE, i); 

     Intent intent = new Intent(ManageDebts.this, TimeAlarm.class); 
     pendingIntent = PendingIntent.getBroadcast(this, i, 
       intent, PendingIntent.FLAG_CANCEL_CURRENT); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 
       60 * 60 * 1000, pendingIntent); 
    } 

После того, как метод завершается тогда цикл по строкам каждый раз и помещает каждый в CustomAdapter (Список) для отображения данных. Вот контекст (опять же, в основном) в моем OnCreate в главном классе:

datasource = new DebtDataSource(this); 
    datasource.open(); 

    **am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    setRepeatingAlarm();** 

    values = datasource.getAllDebt(); 
    adapter = new MyArrayAdapter(this, values); 
    setListAdapter(adapter); 

Я хочу, чтобы пользователь либо длительное нажатие подряд, и он будет удалить элемент, или есть кнопка для удаления все строк. Все работает, но я не могу заставить тревогу уйти.

Я понимаю, КАК это сделать (отменить метод, установив тот же pendingIntent с такими же дополнительными функциями), но мои попытки были сорваны! и я не знаю, ГДЕ это сказать? Все выше приведено в том же класс.

Независимо от того, удаляет ли пользователь одну или несколько строк, я думаю, что простой способ - удалить все аварийные сигналы и снова выполнить этот метод для их сброса. Может ли кто-нибудь помочь и сказать мне, где положить этот код отмены?

ответ

5

В Long щелчку Список

PendingIntent pi = PendingIntent.getBroadcast(context, unique_id, i, 0); 
am.cancel(pi); 

unique_id является индивидуальный для каждого в ожидании намерения так получить ListView идентификатор, добавить +1, так что это будет ваша цель в ожидании ID.

Чтобы этот объект PendingIntent был удален.

Отменить все аварийные сигналы Сделать цикл цикла простым, когда вы устанавливаете будильник и отменяете их.

 Смежные вопросы

  • Нет связанных вопросов^_^