android - 日期选择器在使用时崩溃

标签 android crash datepicker

我正在使用标准的日期选择器来允许用户选择日期。之后,我将计算当前日期和选择日期之间的天数。

问题是,即使我在放入joda时间API之前就可以使用日期选择器,应用崩溃也会被触发。我用于日期选择器的代码是:

mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
    mPickDate = (Button) findViewById(R.id.pickDate);
    // add a click listener to the button
    mPickDate.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {
            showDialog(DATE_DIALOG_ID);
        }
    });
     //get the current date
    final Calendar c = Calendar.getInstance();
    cYear = c.get(Calendar.YEAR);
    cMonth = c.get(Calendar.MONTH);
    cDay = c.get(Calendar.DAY_OF_MONTH);
    Date past = new Date(cYear, cMonth, cDay); // current Date
    Date today = new Date(mYear, mMonth, mDay); // date Choosen by the user
    int days = Days.daysBetween(new DateTime(past), new DateTime(today)).getDays();
    mDateDisplay.setText(""+days);
 private DatePickerDialog.OnDateSetListener mDateSetListener =
            new DatePickerDialog.OnDateSetListener() {

                public void onDateSet(DatePicker view, int year, 
                                      int monthOfYear, int dayOfMonth) {
                    mYear = year;
                    mMonth = monthOfYear;
                    mDay = dayOfMonth;
                    //updateDisplay();
                }
            };
           @Override
            protected Dialog onCreateDialog(int id) {
                switch (id) {
                case DATE_DIALOG_ID:
                    return new DatePickerDialog(this,
                                mDateSetListener,
                                mYear, mMonth, mDay);
                }
                return null;
            }

我有一个updateDisplay()方法正在被引用,但是我已经注释掉了所有与之相关的方法,因为我认为我不需要这样做。对于这里感兴趣的人是:
private void updateDisplay() {
        mDateDisplay.setText(
            new StringBuilder()
                    // Month is 0 based so add 1
                    .append(mMonth + 1).append("-")
                    .append(mDay).append("-")
                    .append(mYear).append(" "));
   }

人们要求这里的logcat输出是

03-17 17:47:42.343: E/AndroidRuntime(8122): FATAL EXCEPTION: main 03-17 17:47:42.343: E/AndroidRuntime(8122): java.lang.IllegalArgumentException: current should be >= start and <= end 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.widget.NumberPicker.setCurrent(NumberPicker.java:288) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.widget.DatePicker.updateDaySpinner(DatePicker.java:364) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.widget.DatePicker.updateSpinners(DatePicker.java:350) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.widget.DatePicker.init(DatePicker.java:346) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.app.DatePickerDialog.(DatePickerDialog.java:124) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.app.DatePickerDialog.(DatePickerDialog.java:83) 03-17 17:47:42.343: E/AndroidRuntime(8122): at com.b00348312.workout.WorkoutChoice.onCreateDialog(WorkoutChoice.java:113) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.app.Activity.onCreateDialog(Activity.java:2513) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.app.Activity.createDialog(Activity.java:888) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.app.Activity.showDialog(Activity.java:2588) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.app.Activity.showDialog(Activity.java:2555) 03-17 17:47:42.343: E/AndroidRuntime(8122): at com.b00348312.workout.WorkoutChoice$2.onClick(WorkoutChoice.java:49) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.view.View.performClick(View.java:2408) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.view.View$PerformClick.run(View.java:8817) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.os.Handler.handleCallback(Handler.java:587) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.os.Handler.dispatchMessage(Handler.java:92) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.os.Looper.loop(Looper.java:144) 03-17 17:47:42.343: E/AndroidRuntime(8122): at android.app.ActivityThread.main(ActivityThread.java:4937) 03-17 17:47:42.343: E/AndroidRuntime(8122): at java.lang.reflect.Method.invokeNative(Native Method) 03-17 17:47:42.343: E/AndroidRuntime(8122): at java.lang.reflect.Method.invoke(Method.java:521) 03-17 17:47:42.343: E/AndroidRuntime(8122): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 03-17 17:47:42.343: E/AndroidRuntime(8122): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 03-17 17:47:42.343: E/AndroidRuntime(8122): at dalvik.system.NativeStart.main(Native Method)

最佳答案

您可以在此处看到我放置日期和时间选择器对话框并将其设置为textView的示例

http://typicaljava.blogspot.in/2012/02/date-picker-time-picker-dialog-and-set.html

希望这对您有所帮助。

关于android - 日期选择器在使用时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9688020/

相关文章:

android - 当应用程序处于后台时,变量保持其值多长时间?

java - Android自定义ArrayAdapter : "unfortunately, app has stopped" while scrolling

java - Android 动画 - 不允许使用字符串类型

IOS启动时发生未知崩溃,没有崩溃日志,没有报告,我该如何捕获它?

jquery 多个日期选择器选择的日期没有很好地突出显示

java - OPENGL ES glRotatef

java - producteev4j 实现

c# - Timer_Tick() + this.ActiveControl 导致 TextReader() 崩溃?

ajax - 通过 ajax 的 grails datepicker 值

reactjs - 如何自定义版本 5 的 Material UI 日期选择器图标?