2015-05-20 157 views
0

但是,當調用intent時應用程序崩潰,從TimePicker對話框中設置Alarm。TimePicker崩潰應用程序

這裏是代碼的對話框:

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(); 
} 

這裏是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) 

這是當我按下ImageButton的啓動TimePicker對話會發生什麼。我想錯誤在於通過意圖傳遞時間。任何幫助將不勝感激。

+0

你在哪裏通過意向發送/接收時間值? –

+0

調試你的代碼並檢查'Null'返回的位置 – hrskrs

+0

@oblivion你試過告訴我關於這個bug的情況嗎? –

回答

0

試一下這個

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(); 
} 
1

你做

calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour()); 
calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute()); 

您應該使用selectedHour和selectedMinute

calendar.set(Calendar.HOUR_OF_DAY, selectedHour); 
calendar.set(Calendar.MINUTE, selectedMinute); 

這應該工作,並確保你做的一切都是正確的與ImageView的 所有最好的

+0

清除錯誤夥伴,但警報不會在設定的時間播放:( – OBX

+0

確定嘗試更改此線路pendingIntent = PendingIntent.getBroadcast(AddAlarm.this,0,myIntent,pendingIntent.FLAG_ONE_SHOT);並將RTC_WAKEUP僅更改爲RTC .. – Prakhar