Как установить TimePickerDialog на текущее время и показывать только текущее и будущее время, а не предыдущие?
Я новичок в Android. Я пытаюсь работать над TimePickerDialog
, Я реализовал его, и он работает нормально, но единственная проблема заключается в том, что он отображает предыдущий раз. Есть ли способ показать только текущее и будущее время в TimepickerDialog? Я сделал следующее кодирование, пожалуйста, направьте меня.
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(Take_Away.this,
new TimePickerDialog.OnTimeSetListener() {
@SuppressLint("SimpleDateFormat")
@Override
public void onTimeSet(TimePicker timePicker,
int selectedHour, int selectedMinute) {
Calendar time = Calendar.getInstance();
time.set(Calendar.HOUR_OF_DAY, selectedHour);
time.set(Calendar.MINUTE, selectedMinute);
SimpleDateFormat format = new SimpleDateFormat(
"hh:mm a");
et_time.setText(format.format(time.getTime()));
hour = selectedHour;
minute = selectedMinute;
}
}, hour, minute, false);// Yes 24 hour time
mTimePicker.setTitle("Select Time");
mTimePicker.show();
4 ответа
Передайте значения часов и времени текущей даты при создании TimePickerDialog
,
// Get current system time
Calendar currentTime = Calendar.getInstance();
mTimePicker = new TimePickerDialog(Take_Away.this,
new TimePickerDialog.OnTimeSetListener() {
@SuppressLint("SimpleDateFormat")
@Override
public void onTimeSet(TimePicker timePicker,
int selectedHour, int selectedMinute) {
Calendar time = Calendar.getInstance();
time.set(Calendar.HOUR_OF_DAY, selectedHour);
time.set(Calendar.MINUTE, selectedMinute);
SimpleDateFormat format = new SimpleDateFormat(
"hh:mm a");
et_time.setText(format.format(time.getTime()));
hour = selectedHour;
minute = selectedMinute;
}
},
currentTime.get(Calendar.HOUR_OF_DAY), // Current hour value
currentTime.get(Calendar.MINUTE), // Current minute value
DateFormat.is24HourFormat()); // Check 24 Hour or AM/PM format
mTimePicker.setTitle("Select Time");
mTimePicker.show();
Обратите внимание на использование DateFormat.is24HourFormat()
также. Это учитывает общесистемные предпочтения вашего пользователя для формата времени 24 часа или AM/PM.
Используйте функцию setMinDate(). Он устанавливает минимальную дату в миллисекундах с 1 января 1970 года 00:00:00 в часовом поясе getDefault(). Установите минимальную дату на сегодняшнюю, чтобы пользователь не смог ее пройти. Что-то вроде следующего в onCreateDialog:
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog d = new DatePickerDialog(getActivity(), listener, year, month, day);
DatePicker dp = d.getDatePicker();
dp.setMinDate(c.getTimeInMillis());
return d;
Попробуйте как ниже. Надеюсь, это поможет вам
private DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
@Override
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
year = selectedYear;
month = selectedMonth;
day = selectedDay;
// Show selected date
editOutputDate.setText(new StringBuilder().append(month + 1)
.append("-").append(day).append("-").append(year)
.append(" "));
}`
};
private int year;
private int month;
private int day;