как сделать сборщик времени на андроиде, чтобы не пропустить прошедшее время - PullRequest
2 голосов
/ 08 февраля 2012

Привет, я новичок в Android, и я не хочу, чтобы прошлое время выбиралось с помощью средства выбора времени. Я пытался использовать следующий код

private TimePicker.OnTimeChangedListener StartTimeChangedListener=new TimePicker.OnTimeChangedListener()
    {
        public void onTimeChanged(TimePicker view,int selectedHour,int selectedMinute)
        {
            update(view,selectedHour,selectedMinute);
        }
    };

, и я не знаю, как написать код для обновления.(вид, selectedHour, selectedMinute);кто-нибудь может мне помочь, пожалуйста ...

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

Вы пробовали следовать учебнику на странице разработчиков для таймера?

Edit:

Хорошо, поэтому, следуя инструкции, у нас есть метод обновления для textview, который покажет ваше время:

private void updateDisplay() {
    mTimeDisplay.setText(
        new StringBuilder()
                .append(pad(mHour)).append(":")
                .append(pad(mMinute)));
}

private static String pad(int c) {
    if (c >= 10)
        return String.valueOf(c);
    else
        return "0" + String.valueOf(c);
}

Диалог, который будет создан для пользователя, чтобы выбрать время:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case TIME_DIALOG_ID:
        return new TimePickerDialog(this,
                mTimeSetListener, mHour, mMinute, false);
    }
    return null;
}

И здесь я бы добавил желаемое ограничение - метод обратного вызова, когда пользователь устанавливает время. Вам нужно узнать текущий час и минуту, и если пользователь выберет прошедшее время, вы не отобразите его изменения и не отправите ему тост или что-то в этом роде.

Используя Календарь, вы можете легко получить его:

Calendar c = Calendar.getInstance();           

// the callback received when the user "sets" the time in the dialog
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
    new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
           if (mHour >= Integer.getInteger(c.get(Calendar.HOUR_OF_DAY)) && mMinute >= Integer.getInteger(c.get(Calendar.MINUTE))) { 
            mHour = hourOfDay;
            mMinute = minute;                
            updateDisplay();
            } else 
            //Display a toast or something to inform the user that he can't pick a past time.   
        }

Теперь, если вы хотите, чтобы пользователь не мог выбрать предыдущее время в созданном вами диалоге, вам нужно создать свой собственный экран выбора часов, потому что TimePickerDialog не имеет ограничений относительно того, какие значения вы можете выбрать.

Надеюсь, это поможет!

0 голосов
/ 21 марта 2017
if((hourOfDay <= (calendar.get(Calendar.HOUR_OF_DAY)))&&
        (minute <= (calendar.get(Calendar.MINUTE)))){
    Toast.makeText(getActivity(), "Wrong hour",
            Toast.LENGTH_SHORT).show();
}
0 голосов
/ 15 ноября 2013

Я немного изменил код, и он работает для меня: Я взял указатель даты и времени в одном диалоговом окне оповещения и напишу некоторый код, когда кто-то хочет установить время для оповещения с помощью его положительной кнопки.

       final DatePicker pickdate = (DatePicker) view
                .findViewById(R.id.datePicker1);
       final TimePicker pickTime = (TimePicker) view
                .findViewById(R.id.timePicker1);

        builder.setPositiveButton("Set Alarm Time",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        int day = pickdate.getDayOfMonth();
                        int month = pickdate.getMonth();
                        int year = pickdate.getYear();

                        int hour = pickTime.getCurrentHour();
                        int min = pickTime.getCurrentMinute();
                        c = Calendar.getInstance();

      if (min >= c.get(Calendar.MINUTE)
      && hour >= c.get(Calendar.HOUR_OF_DAY)
      && day >= c.get(Calendar.DAY_OF_MONTH)
      && (month + 1) >= c.get(Calendar.MONTH)
      && year >= c.get(Calendar.YEAR)) {

  String setdate = year + "-" + (month + 1) + "-"
  + day + " " + hour + ":" + min;

  //Use the string where you wants
 }

    else {
         //show some error toast
     Toast.makeText(context,
     Html.fromHtml("<font color=RED><em><strong>Past Time  Can't Be Added</strong></em>/font>")
    ,Toast.LENGTH_SHORT).show();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...