Как установить 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;

Думаю, это поможет mTimePicker.updateTime(hourOfDay,minute);

Другие вопросы по тегам