OBX
OBX

Reputation: 6114

TimePicker Crashes app

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

Answers (2)

Prakhar
Prakhar

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

Pdksock
Pdksock

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

Related Questions