Выбор даты сбой при использовании - PullRequest
1 голос
/ 13 марта 2012

Я использую стандартный инструмент выбора даты, чтобы позволить пользователю выбрать дату. После этого я вычислю дни между текущей датой и датой, которая была выбрана.

Проблема в том, что при запуске приложения выбора даты происходит сбой приложения, хотя оно работало до того, как я вставил API времени joda. Код, который я использую для выбора даты: -

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: текущее значение должно быть> = start и <= end 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.widget.NumberPicker.setCurrent (NumberPicker.java:288) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.widget.DatePicker.updateDaySpinner (DatePicker.java:364) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.widget.DatePicker.updateSpinners (DatePicker.java:350) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.widget.DatePicker.init (DatePicker.java:346) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.app.DatePickerDialog. (DatePickerDialog.java:124) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.app.DatePickerDialog. (DatePickerDialog.java:83) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на com.b00348312.workout.WorkoutChoice.onCreateDialog (WorkoutChoice.java:113) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на 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): на android.app.Activity.showDialog (Activity.java:2588) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.app.Activity.showDialog (Activity.java:2555) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на com.b00348312.workout.WorkoutChoice $ 2.onClick (WorkoutChoice.java:49) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.view.View.performClick (View.java:2408) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на android.view.View $ PerformClick.run (View.java:8817) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на 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): на android.os.Looper.loop (Looper.java:144) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на 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): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) 03-17 17: 47: 42.343: E / AndroidRuntime (8122): at dalvik.system.NativeStart.main (собственный метод) </p>

Ответы [ 2 ]

0 голосов
/ 30 мая 2013

Сделайте одну вещь, просто инициализируйте ваши значения любой датой как -

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

И тогда вы не приблизитесь к силе.

Спасибо

0 голосов
/ 13 марта 2012

Здесь вы можете увидеть пример, в котором я поместил диалоговое окно выбора даты и времени и установил для него textView

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

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...