У меня есть метод, который устанавливает время, в течение которого я хочу, чтобы будильник срабатывал. В этом методе я также получил кнопку Stop, которая отменяет тревогуОтмена AlarmManager
if(alarmManager != null){
alarmManager.cancel(pi);
}
Моя проблема заключается в том, что, когда я поставил будильник, выйти из приложения и снова, чтобы отменить сигнал тревоги я получаю NullPointer. Я предполагаю, что это потому, что PendingIntent также закрывается, когда я покидаю приложение (установите значение null).
Как я могу предотвратить это, чтобы отменить будильник?
Heres весь метод:
@SuppressWarnings("deprecation")
public void setTime(){
Calendar mcurrentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE);
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener()
{
int callCount = 0; //To track number of calls to onTimeSet()
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute)
{
if(callCount == 1) // On second call
{
String timeString = "";
timeString = selectedHour + ":" + selectedMinute + ":00";
Log.d("TEST", "Chosen time : "+ timeString);
setAlarm(timePicker, selectedHour, selectedMinute);
}
callCount++; // Incrementing call count.
}
}, hour, minute, true);
mTimePicker.setButton(DialogInterface.BUTTON_POSITIVE, "Set", mTimePicker);
mTimePicker.setButton(DialogInterface.BUTTON_NEGATIVE, "Stop", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(alarmManager != null){
alarmManager.cancel(pi);
}
}
});
mTimePicker.setTitle(R.string.time);
mTimePicker.show();
}
Это именно то, что я ищу. но как я могу разместить PendingIntent в файле savedInstanceState.put .. (...); Я все еще новичок, когда дело доходит до android. –
Вам не нужно ставить сам PendingIntent в Bundle, но данные, которые вы использовали для его создания. Есть несколько сигналов тревоги в вашем приложении? –
No. theres только один сигнал тревоги –