これについては非常に多くの質問があることは知っていますが、解決策はありません。ユーザーに今日より前の日付を選択するように制限したいのですが、できません。
_public class DatePickerDialogFragment extends DialogFragment {
private OnDateSetListener listener;
public void setListener(OnDateSetListener listener) {
this.listener = listener;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(getContext(), listener, year, month, day);
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
return dialog;
}
}
_
私はそれを次のように示しています:
_DatePickerDialogFragment fragment = new DatePickerDialogFragment();
fragment.setListener(dateSetListener);
fragment.show(getSupportFragmentManager(), "Choose booking date");
_
ユーザーが今日より前の日付を選択できないようにする必要があります。ご覧のとおり、今日の時間でsetMinDate()
メソッドを呼び出しましたが、効果はありません。ダイアログには、今日より前の日付がグレーで選択可能として表示されます。
また、いくつかのstackoverflowの回答で示唆されているように、DatePickerDialog
をサブクラス化し、onDateChanged
をオーバーライドしようとしましたが、成功しませんでした。
システム時間を取得し、それから1秒を引きます
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
dialog = new DatePickerDialog(act, listener, year, month, day);
dialog.getDatePicker().setMinDate(System.currentTimeMillis() -1000);
return dialog;
}
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
API 11より上
_Android:minDate="mm/dd/yyyy"
_またはsetMinDate(long time)
最大日付の場合
_Android:maxDate="mm/dd/yyyy"
_ // XMLで
setMaxDate(new Date().getTime());
//現在の時刻