나는 알람을 발생시키고 자하는 시간을 설정하는 메소드를 가지고있다. 이 방법에서는 은 또한AlarmManager 취소
if(alarmManager != null){
alarmManager.cancel(pi);
}
내 문제는 내가 알람을 설정할 때, 나는 nullPointer를 얻을 알람을 취소하려면 응용 프로그램에서 가서 다시에 있다는 것입니다 경보를 취소 중지 버튼을 얻었다. 내가 그것을 떠날 때 PendingIntent 또한 닫히기 때문에 짐작할 수 있습니다 (null로 설정).
어떻게하면 알람이 취소 될 수 있습니까?
을 Heres 전체 방법 : 당신은 그래서 당신은 다시 응용 프로그램을 열 때
here를 보여 같은 번들에 PendingIntent를 구성하는 데 사용되는 데이터를 저장할 수 있습니다
@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에 넣을 수 있습니까? (...); –
번들 자체에 PendingIntent 자체를 넣지 않아도되지만 구성하는 데 사용한 데이터가 필요하지 않습니다. 앱에 여러 개의 알람이 있습니까? –
번호가 하나만 있습니다. –