2012-03-13 68 views
1

我正在使用標準日期選擇器來允許用戶選擇一個日期。在此之後,我將計算當前日期與所選日期之間的日期。日期選擇器使用時崩潰

問題是當日期選擇器從應用程序崩潰中解僱時,即使我在將它放入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):致命異常:主要 03-17 17:47:42.343:E/AndroidRuntime(8122):java.lang.IllegalArgumentException:current應該是> = start並且< = 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) 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):在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):在android.os.Handler.dispatchMessage(Handler.java:92) 03-17 17:47:42.343:E/AndroidRuntime(8122):at android.os 。廁所per.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):在java.lang.reflect.Method.invokeNative(本地方法) 03-17 17:47:42.343:E/AndroidRuntime(8122):在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。主(本地方法)

+2

當「應用程序崩潰」時,總是看看logcat說的是什麼時候。 (或在這裏發佈,所以我們可以看到它,這使得它更容易幫助) – Sprigg 2012-03-13 17:02:21

+0

發佈您的logcat – 2012-03-14 05:46:06

回答

0

做一兩件事簡單地與任何日期爲初始化你的價值觀 -

    mYear = 2013; 
        mMonth = 5; 
        mDay = 30; 

而且你不會得到強制關閉即可。

謝謝

相關問題