Отмена datePicker при нажатии за пределы Android

88
7

У меня есть фрагмент с календарем, когда я нажимаю кнопку "buttonRectangle", он показывает datePicker для установки даты. Моя проблема заключается в том, что если пользователь отменяет (щелкнув вне диалогового окна или с помощью кнопки обратной связи Android, вызывается метод "generateDays()". Я не хочу, чтобы этот метод вызывался, если пользователь отменяет. "setCanceledOnTouchOutside (true)", но это не сработает.

buttonRectangle.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
final Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
generateDays(myCalendar);
}
};
DatePickerDialog dpd= new DatePickerDialog(getActivity(), date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
dpd.setCanceledOnTouchOutside(true);
dpd.show();

calendar.refreshCalendar();

}
});

Заранее спасибо.

спросил(а) 2021-01-25T20:36:29+03:00 4 месяца, 4 недели назад
1
Решение
108

попробуй это...

void showDatePicker() {
Calendar c = Calendar.getInstance();
currentYear = c.get(Calendar.YEAR);
currentMonth = c.get(Calendar.MONTH);
currentDay = c.get(Calendar.DAY_OF_MONTH);

final DatePicker datePicker = new DatePicker(this);
datePicker.init(currentYear, currentMonth, currentDay,new OnDateChangedListener() {

@Override
public void onDateChanged(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
this.monthOfYear=monthOfYear;
this.dayOfMonth=dayOfMonth;
this.year=year;
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
datePicker.setCalendarViewShown(false);
}
datePicker.setSpinnersShown(true);

datePickerDialog = new AlertDialog.Builder(this)
.setTitle("Choose")
.setPositiveButton(android.R.string.ok,new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {

}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {

}
}).setView(datePicker).show();

}

ответил(а) 2021-01-25T20:36:29+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема