2011-10-13 25 views
6

Estoy tratando de implementar el selector de fecha en un botón en Android. Pero tan pronto como hago clic en el botón aparece el error. Pero el selector de tiempo funciona bien. Aquí está el código:java.lang.IllegalArgumentException: current debería ser> = start y <= end

mPickDate.setOnClickListener(new View.OnClickListener() {  //Assigning onClickListener to Date Button                 
     public void onClick(View v) { 
      showDialog(DATE_DIALOG_ID); 
      }  
    }); 

    pickTime.setOnClickListener(new View.OnClickListener() {  //Assigning onClickListener to Time Button 

     @Override 
     public void onClick(View v) { 
      showDialog(TIME_DIALOG_ID); 

     } 
    }); 
    } 

    @Override 
    protected Dialog onCreateDialog(int id) {      //Overriding onCreateDialog() 
     switch (id) { 
     case DATE_DIALOG_ID: 
      return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); 
     case TIME_DIALOG_ID: 
      return new TimePickerDialog(this,mTimeSetListener,mHour,mMin,true); 

     } 
     return null; 
    } 

    TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {  //Defining the TimePickerDialog reference variable 

     @Override 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      mHour=hourOfDay; 
      mMin= minute; 
      updateTime(); 
     } 
    }; 

    DatePickerDialog.OnDateSetListener mDateSetListener =      //Defining the DatePickerDialog reference variable 
     new DatePickerDialog.OnDateSetListener() { 

      public void onDateSet(DatePicker view, int year, 
            int monthOfYear, int dayOfMonth) { 
       mYear = year; 
       mMonth = monthOfYear; 
       mDay = dayOfMonth; 
       updateDisplay(); 
      } 
     };   

Aquí está la Logcat:

10-13 16:41:46.878: ERROR/AndroidRuntime(761): FATAL EXCEPTION: main 
10-13 16:41:46.878: ERROR/AndroidRuntime(761): java.lang.IllegalArgumentException: current should be >= start and <= end 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.widget.NumberPicker.setCurrent(NumberPicker.java:288) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.widget.DatePicker.updateDaySpinner(DatePicker.java:370) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.widget.DatePicker.updateSpinners(DatePicker.java:356) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.widget.DatePicker.init(DatePicker.java:352) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.app.DatePickerDialog.<init>(DatePickerDialog.java:127) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.app.DatePickerDialog.<init>(DatePickerDialog.java:86) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at acb.xiynove.OfflineScreen_ACBActivity.onCreateDialog(OfflineScreen_ACBActivity.java:74) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.app.Activity.onCreateDialog(Activity.java:2482) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.app.Activity.createDialog(Activity.java:882) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.app.Activity.showDialog(Activity.java:2557) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.app.Activity.showDialog(Activity.java:2524) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at acb.xiynove.OfflineScreen_ACBActivity$3.onClick(OfflineScreen_ACBActivity.java:56) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.view.View.performClick(View.java:2485) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.view.View$PerformClick.run(View.java:9080) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.os.Handler.handleCallback(Handler.java:587) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.os.Looper.loop(Looper.java:123) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at java.lang.reflect.Method.invoke(Method.java:507) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
10-13 16:41:46.878: ERROR/AndroidRuntime(761):  at dalvik.system.NativeStart.main(Native Method) 

Respuesta

23

Tengo el mismo problema pero he encontrado solución. Debe inicializar mAño, mm, mDay:

//Init this variables as you wish eg.: 
private int mYear = 2010; 
private int mMonth = 11; 
private int mDay =1; 
@Override 
protected Dialog onCreateDialog(int id) {      //Overriding onCreateDialog() 
    switch (id) { 
    case DATE_DIALOG_ID: 
     return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); 
    case TIME_DIALOG_ID: 
     return new TimePickerDialog(this,mTimeSetListener,mHour,mMin,true); 

    } 
    return null; 
} 
Cuestiones relacionadas