2012-03-06 100 views
1

当我尝试调用DatePickerDialog时,应用程序崩溃,尽管我按照相同的方式调用TimePickerDialog,并且它可以工作。有什么建议么。调用DatePickerdialog时出错

我检查了一个DatePickerDialog的例子,它和我所关注的一样。

    I STILL Have the Same Problem 

代码:

public class PickerActivity extends Activity{ 

int hour, minute; 
int year,month, day; 
static final int timePickerId = 0; 
static final int datePickerId = 1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.picker); 

    //showDialog(timePickerId); 
    showDialog(datePickerId); 
} 

@Override  
protected Dialog onCreateDialog(int id) { 

    switch (id) { 
    /*case timePickerId: 
     return new TimePickerDialog(
      this, mTimeSetListener, hour, minute, true);*/ 
    case datePickerId: 
     return new DatePickerDialog(
      this, mDateSetListener, year, month, day); 
} 
return null;  
} 

private DatePickerDialog.OnDateSetListener mDateSetListener = 
     new DatePickerDialog.OnDateSetListener() 
     { 
      public void onDateSet(DatePicker view, int Year, int monthOfYear, 
        int dayOfMonth) 
      { 
       year = Year; 
       month = monthOfYear; 
       day = dayOfMonth; 
       Toast.makeText(getBaseContext(), 
         "You have selected : " + (month) + 
         "/" + day + "/" + year, 
         Toast.LENGTH_SHORT).show(); 
      } 
     }; 

的logcat:

03-06 17:52:40.600: E/AndroidRuntime(819): FATAL EXCEPTION: main 
03-06 17:52:40.600: E/AndroidRuntime(819): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidbook.DatePicker/com.androidbook.DatePicker.PickerActivity}: java.lang.IllegalArgumentException: current should be >= start and <= end 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.os.Looper.loop(Looper.java:130) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-06 17:52:40.600: E/AndroidRuntime(819): at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 17:52:40.600: E/AndroidRuntime(819): at java.lang.reflect.Method.invoke(Method.java:507) 
03-06 17:52:40.600: E/AndroidRuntime(819): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-06 17:52:40.600: E/AndroidRuntime(819): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-06 17:52:40.600: E/AndroidRuntime(819): at dalvik.system.NativeStart.main(Native Method) 
03-06 17:52:40.600: E/AndroidRuntime(819): Caused by: java.lang.IllegalArgumentException: current should be >= start and <= end 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.widget.NumberPicker.setCurrent(NumberPicker.java:288) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.widget.DatePicker.updateDaySpinner(DatePicker.java:397) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.widget.DatePicker.updateSpinners(DatePicker.java:383) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.widget.DatePicker.init(DatePicker.java:379) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:127) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:86) 
03-06 17:52:40.600: E/AndroidRuntime(819): at com.androidbook.DatePicker.PickerActivity.onCreateDialog(PickerActivity.java:39) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.Activity.onCreateDialog(Activity.java:2482) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.Activity.createDialog(Activity.java:882) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.Activity.showDialog(Activity.java:2557) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.Activity.showDialog(Activity.java:2524) 
03-06 17:52:40.600: E/AndroidRuntime(819): at com.androidbook.DatePicker.PickerActivity.onCreate(PickerActivity.java:27) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-06 17:52:40.600: E/AndroidRuntime(819): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
03-06 17:52:40.600: E/AndroidRuntime(819): ... 11 more 
03-06 17:54:56.370: E/AndroidRuntime(852): FATAL EXCEPTION: main 
03-06 17:54:56.370: E/AndroidRuntime(852): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidbook.DatePicker/com.androidbook.DatePicker.PickerActivity}: java.lang.IllegalArgumentException: current should be >= start and <= end 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.os.Looper.loop(Looper.java:130) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-06 17:54:56.370: E/AndroidRuntime(852): at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 17:54:56.370: E/AndroidRuntime(852): at java.lang.reflect.Method.invoke(Method.java:507) 
03-06 17:54:56.370: E/AndroidRuntime(852): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-06 17:54:56.370: E/AndroidRuntime(852): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-06 17:54:56.370: E/AndroidRuntime(852): at dalvik.system.NativeStart.main(Native Method) 
03-06 17:54:56.370: E/AndroidRuntime(852): Caused by: java.lang.IllegalArgumentException: current should be >= start and <= end 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.widget.NumberPicker.setCurrent(NumberPicker.java:288) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.widget.DatePicker.updateDaySpinner(DatePicker.java:397) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.widget.DatePicker.updateSpinners(DatePicker.java:383) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.widget.DatePicker.init(DatePicker.java:379) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:127) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:86) 
03-06 17:54:56.370: E/AndroidRuntime(852): at com.androidbook.DatePicker.PickerActivity.onCreateDialog(PickerActivity.java:39) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.Activity.onCreateDialog(Activity.java:2482) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.Activity.createDialog(Activity.java:882) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.Activity.showDialog(Activity.java:2557) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.Activity.showDialog(Activity.java:2524) 
03-06 17:54:56.370: E/AndroidRuntime(852): at com.androidbook.DatePicker.PickerActivity.onCreate(PickerActivity.java:27) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-06 17:54:56.370: E/AndroidRuntime(852): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
03-06 17:54:56.370: E/AndroidRuntime(852): ... 11 more 
03-06 17:55:12.010: E/AndroidRuntime(886): FATAL EXCEPTION: main 
03-06 17:55:12.010: E/AndroidRuntime(886): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidbook.DatePicker/com.androidbook.DatePicker.PickerActivity}: java.lang.IllegalArgumentException: current should be >= start and <= end 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.os.Looper.loop(Looper.java:130) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-06 17:55:12.010: E/AndroidRuntime(886): at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 17:55:12.010: E/AndroidRuntime(886): at java.lang.reflect.Method.invoke(Method.java:507) 
03-06 17:55:12.010: E/AndroidRuntime(886): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-06 17:55:12.010: E/AndroidRuntime(886): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-06 17:55:12.010: E/AndroidRuntime(886): at dalvik.system.NativeStart.main(Native Method) 
03-06 17:55:12.010: E/AndroidRuntime(886): Caused by: java.lang.IllegalArgumentException: current should be >= start and <= end 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.widget.NumberPicker.setCurrent(NumberPicker.java:288) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.widget.DatePicker.updateDaySpinner(DatePicker.java:397) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.widget.DatePicker.updateSpinners(DatePicker.java:383) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.widget.DatePicker.init(DatePicker.java:379) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:127) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:86) 
03-06 17:55:12.010: E/AndroidRuntime(886): at com.androidbook.DatePicker.PickerActivity.onCreateDialog(PickerActivity.java:39) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.Activity.onCreateDialog(Activity.java:2482) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.Activity.createDialog(Activity.java:882) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.Activity.showDialog(Activity.java:2557) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.Activity.showDialog(Activity.java:2524) 
03-06 17:55:12.010: E/AndroidRuntime(886): at com.androidbook.DatePicker.PickerActivity.onCreate(PickerActivity.java:27) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-06 17:55:12.010: E/AndroidRuntime(886): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
03-06 17:55:12.010: E/AndroidRuntime(886): ... 11 more 
03-06 17:58:35.520: E/AndroidRuntime(920): FATAL EXCEPTION: main 
03-06 17:58:35.520: E/AndroidRuntime(920): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidbook.DatePicker/com.androidbook.DatePicker.PickerActivity}: java.lang.IllegalArgumentException: current should be >= start and <= end 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.os.Looper.loop(Looper.java:130) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-06 17:58:35.520: E/AndroidRuntime(920): at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 17:58:35.520: E/AndroidRuntime(920): at java.lang.reflect.Method.invoke(Method.java:507) 
03-06 17:58:35.520: E/AndroidRuntime(920): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-06 17:58:35.520: E/AndroidRuntime(920): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-06 17:58:35.520: E/AndroidRuntime(920): at dalvik.system.NativeStart.main(Native Method) 
03-06 17:58:35.520: E/AndroidRuntime(920): Caused by: java.lang.IllegalArgumentException: current should be >= start and <= end 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.widget.NumberPicker.setCurrent(NumberPicker.java:288) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.widget.DatePicker.updateDaySpinner(DatePicker.java:397) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.widget.DatePicker.updateSpinners(DatePicker.java:383) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.widget.DatePicker.init(DatePicker.java:379) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:127) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:86) 
03-06 17:58:35.520: E/AndroidRuntime(920): at com.androidbook.DatePicker.PickerActivity.onCreateDialog(PickerActivity.java:38) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.Activity.onCreateDialog(Activity.java:2482) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.Activity.createDialog(Activity.java:882) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.Activity.showDialog(Activity.java:2557) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.Activity.showDialog(Activity.java:2524) 
03-06 17:58:35.520: E/AndroidRuntime(920): at com.androidbook.DatePicker.PickerActivity.onCreate(PickerActivity.java:27) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-06 17:58:35.520: E/AndroidRuntime(920): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
03-06 17:58:35.520: E/AndroidRuntime(920): ... 11 more 

回答

3

java.lang.IllegalArgumentException异常:当前应> =启动和< =结束

看来你”将日,月,年设置为正确的值。

+0

但是当你创建对话框时,这些值被赋予 – LetsamrIt 2012-03-06 17:23:49

+1

,监听器还没有被调用......除非你在其他地方初始化全局变量。 – jsimpson 2012-03-06 17:33:04

+0

但我遵循与timepickerdialog相同的方式,它工作正常? – LetsamrIt 2012-03-06 17:37:13

2

年份或月份有非法值。尝试urdate.getYear() + 1900,年份从1900年开始。urdate.getMonth的月份范围为0-11。