Как получить выбранное время с TimePicker’a

Надо мне тут было в программулинке сделать выбор времени. Накидал быстренько layout, добавил на него TimePicker, пару кнопок — вырбать/отмена. На нужную кнопку добавил вызов этой активности и … ничего. По нажатию на кнопку «выбрать» Я постоянно получал текущее время через методы:

TimePicker.getCurrentHour();
TimePicker.getCurrentMinute();

После курения мануалов, stackoverflow’а и книжки Pro Android оказалось, что для выбора времени существует специальный TimePickerDialog, который то и нужно использовать. И использовать его нужно следующим образом.Создаём в нашем классе переменные, в которых будет хранится время (час и минута):

private int mHour = 0;
private int mMin = 0;

Создаём слушателя, который будет вызываться при изменении времени в TimePicker’е:

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
  public void onTimeSet(TimePicker timePicker, int hour, int minute) {
    mHour = hour; // устанавливаем часы
    mMin = minute; // устанавливаем минуты
    updateTextView(); // обновляем TextView
  }
};
 
private void updateTextView() {
  TextView tw = (TextView)this.findViewById(R.id.time); // ищем TextView
  tw.setText(pad(mHour) + ":" + pad(mMin)); // устанавливаем текст
}

Ну и в нужном месте вызываем наше диалоговое окно:

@Override
protected Dialog onCreateDialog(int id) {
  switch (id) {
    case TIME_DIALOG_ID: // если наш диалог
      return new TimePickerDialog(this, mTimeSetListener, mHour, mMin, true);
  }
  return null;
}
 
public void setTime(View view) {
  showDialog(TIME_DIALOG_ID); // вызов диалога
}

 

Аналогично работает и DatePickerDialog.

Проект IDEA. Скачать пример Как получить выбранное время с TimePicker’a.

Читайте также:

комментариев 8

  1. Urich:

    Ничего не понял, но одобряю :)

  2. Starz:

    О, отлично. Спасибо. Особенно за проект во вложении.
    Мне вот тоже не понятно, нафига тогда нужен этот TimePicker как таковой, отдельно…

  1. 09 Янв 2013

    […] коде и обнаружил небольшой недоработок в статье Как получить выбранное время с TimePicker’a. Недостаток заключается в том, что при первом вызове […]

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *