DatePickerDialog показывает неверную дату, если она открыта, а затем дата меняется в другом месте - PullRequest
3 голосов
/ 31 марта 2011

Код ниже показывает DatePickerDialog для пользователя, чтобы вставить дату и работает, как ожидается.Когда дата обновляется, и пользователь закрывает диалоговое окно, кнопка, которая запустила DatePickerDialog, обновляется, чтобы показать выбранную дату:

// Date Picker Section
@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:
        Log.i(TAG, "Setting up new date picker "+timestampCalendar);
        datepicker =  new DatePickerDialog(this,
                mDateSetListener,
                timestampCalendar.get(Calendar.YEAR),
                timestampCalendar.get(Calendar.MONTH),
                timestampCalendar.get(Calendar.DATE));          
        return datepicker;
    }
    return null;
}

// updates the date we display in the Button
private void updateDateButton() {       
    timestampTextView.setText(monthName[timestampCalendar.get(Calendar.MONTH)]+", "+timestampCalendar.get(Calendar.DATE)+" "+timestampCalendar.get(Calendar.YEAR));
}

// the callback received when the user "sets" the date in the dialog
private DatePickerDialog.OnDateSetListener mDateSetListener =
    new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        timestampCalendar.set(year, monthOfYear, dayOfMonth);
        datepicker.updateDate(timestampCalendar.get(Calendar.DATE), timestampCalendar.get(Calendar.MONTH), timestampCalendar.get(Calendar.DATE));
        updateDateButton();         
    }
};

Но здесь я начинаю испытывать проблемы.Код ниже - это onClickListener для кнопки, которая добавляет один день к объекту календаря timestampCalendar.Если я открою DatePickerDialog и закрою его, используйте кнопку «плюс1», а затем снова откройте DatePickerDialog, он по-прежнему показывает дату, с которой я впервые закрыл DatePickerDialog.путем вызова метода updateDate () объекта DatePickerDialog в прослушивателе набора, но это тоже не работает.

У кого-нибудь есть идеи?

1 Ответ

4 голосов
/ 31 марта 2011

Вам нужно позвонить по этой линии:

datepicker.updateDate(timestampCalendar.get(Calendar.DATE), timestampCalendar.get(Calendar.MONTH), timestampCalendar.get(Calendar.DATE));

Когда вы используете кнопку плюс1. Это обновит дату выбора.

Вы могли бы просто переместить эту строку кода в updateDateButton (); остановить повторение.

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