У меня есть диалог выбора даты, который отлично работает на android 9 и android 10, я решил проверить на android 5.1.1, и после выбора даты ничего не происходит, onDateSet () не ' Не могу запустить, я прочитал по крайней мере 10 статей по SO, которые касаются подобных проблем, но не могу найти работающее решение
Вот мой код, возможно, кто-то может указать, что я делаю неправильно
DateDialog. java
public class DateDialog extends DialogFragment {
DatePickerDialog.OnDateSetListener mOnDateSetListener;
public static final String BUNDLE_CURRENT_DATE = "current_date";
private long currentDateMillis = 0;
public static DateDialog getInstance(long currentDate) {
Bundle args = new Bundle();
args.putLong(BUNDLE_CURRENT_DATE, currentDate);
DateDialog dateDialog = new DateDialog();
dateDialog.setArguments(args);
return dateDialog;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mOnDateSetListener = (DatePickerDialog.OnDateSetListener) context;
}
@Override
public void onDetach() {
super.onDetach();
mOnDateSetListener = null;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
currentDateMillis = getArguments().getLong(BUNDLE_CURRENT_DATE);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar currentDateCalender = Calendar.getInstance();
currentDateCalender.setTimeInMillis(currentDateMillis);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), mOnDateSetListener, currentDateCalender.get(Calendar.YEAR)
, currentDateCalender.get(Calendar.MONTH), currentDateCalender.get(Calendar.DAY_OF_MONTH));
long maxDate = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(60);
datePickerDialog.getDatePicker().setMaxDate(maxDate);
Calendar tomorrow = Calendar.getInstance();
tomorrow.add(Calendar.DATE, 1);
datePickerDialog.getDatePicker().setMinDate(tomorrow.getTimeInMillis());
return datePickerDialog;
}
}
И вот как я запускаю диалог в своей деятельности
MyActivity. Java
public void editExpiryDate() {
DateDialog dialog = DateDialog.getInstance(selectedExpiryDate);
dialog.show(getFragmentManager(), "");
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar newDate = Calendar.getInstance();
newDate.set(Calendar.MONTH, month);
newDate.set(Calendar.YEAR, year);
newDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
selectedExpiryDate = newDate.getTimeInMillis();
String expiryDateDisplayed = dateFormat.format(new Date(selectedExpiryDate)) + " (" +
DateUtil.getNumberOfDaysToGo(selectedExpiryDate) + " days)";
expiryDateTextView.setText(expiryDateDisplayed);
}