Reputation: 6114
Setting an Alarm from a TimePicker dialog, however, when intent is invoked the app crashes.
Here is the Code for the Dialog :
public void clicker (View view)
{
Calendar calendar = Calendar.getInstance();
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(AddAlarm.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker,int selectedHour, int selectedMinute) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
Intent myIntent = new Intent(AddAlarm.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(AddAlarm.this, 0, myIntent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
pendingIntent);
}
}, hour, minute, false);// Yes 24 hour time
mTimePicker.setTitle("Select Time");
mTimePicker.show();
}
Here is the logcat :
05-20 13:04:08.627 10462-10462/zyia.alarm.zyia.zyia E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException
at zyia.alarm.zyia.zyia.AddAlarm$2.onTimeSet(AddAlarm.java:72)
at android.app.TimePickerDialog.tryNotifyTimeSet(TimePickerDialog.java:192)
at android.app.TimePickerDialog.onClick(TimePickerDialog.java:156)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage (AlertController.java:167)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
This is what happens when I press the ImageButton to launch the TimePicker dialog. I guess the mistake is in passing the time via intents. Any help will be appreciated.
Upvotes: 0
Views: 570
Reputation: 710
you have done
calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
You should use selectedHour and selectedMinute
calendar.set(Calendar.HOUR_OF_DAY, selectedHour);
calendar.set(Calendar.MINUTE, selectedMinute);
This should work, And make sure you did everything correct with imageView All the best
Upvotes: 1
Reputation: 1030
Try this
public void clicker (View view)
{
Calendar calendar = Calendar.getInstance();
final TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(AddAlarm.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker,int selectedHour, int selectedMinute) {
timePicker = mTimepicker;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
Intent myIntent = new Intent(AddAlarm.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(AddAlarm.this, 0, myIntent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
pendingIntent);
}
}, hour, minute, false);// Yes 24 hour time
mTimePicker.setTitle("Select Time");
mTimePicker.show();
}
Upvotes: 0