У меня есть простой DatePickerDialog
, который открывается, когда открывается EditText
. После выбора даты и нажатия OK, она должна отображаться на том же EditText
. Он отлично работает, если я использую только диалог по умолчанию, где он создает только одну кнопку - ОК. Я добавил кнопку «Отмена», проблема в том, что она получает только текущую дату.DatePickerDialog OK кнопка не получает выбранную дату
Вот мой код:
private void showDatePicker(String birthdayStr) {
// TODO Auto-generated method stub
final Calendar c = Calendar.getInstance();
if (birthdayStr.equals("")) {
yearStr = c.get(Calendar.YEAR);
monthStr = c.get(Calendar.MONTH);
dayStr = c.get(Calendar.DAY_OF_MONTH);
}
DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
if (isOkayClicked) {
birthday.setText(selectedYear + (selectedMonth + 1) + selectedDay);
yearStr = selectedYear;
monthStr = selectedMonth;
dayStr = selectedDay;
}
isOkayClicked = false;
}
};
DatePickerDialog datePickerDialog = new DatePickerDialog(
RegistrationTwoActivity.this, datePickerListener, yearStr,
monthStr, dayStr);
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
getString(R.string.cancel),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_NEGATIVE) {
dialog.cancel();
isOkayClicked = false;
}
}
});
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
isOkayClicked = true;
birthday.setText(selectedYear + (selectedMonth + 1) + selectedDay);
}
}
});
datePickerDialog.setCancelable(false);
datePickerDialog.show();
}
Если удалить строку birthday.setText(selectedYear + (selectedMonth + 1) + selectedDay);
под OK или BUTTON_POSITIVE, он отлично работает. Но на некоторых устройствах он не устанавливает выбранную дату в EditText
, так как она была вызвана только внутри datePickerListener
. Поэтому я решил добавить строку birthday.setText(selectedYear + (selectedMonth + 1) + selectedDay);
под OK или BUTTON_POSITIVE, но теперь проблема в том, что она получает только текущую дату.
Я немного смущен этим. Если бы кто-то мог мне помочь.
Большое вам спасибо за это, потребовалось столько времени, чтобы ответить, но это сработало. Я знал, что должен получить эти значения из 'datePickerListener', я просто не знал, как использовать глобальные переменные. –