Я использую стандартный инструмент выбора даты, чтобы позволить пользователю выбрать дату. После этого я вычислю дни между текущей датой и датой, которая была выбрана.
Проблема в том, что при запуске приложения выбора даты происходит сбой приложения, хотя оно работало до того, как я вставил 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>