2015-01-06 2 views
2

Привет, ребята, любезно помогите отключить будущее время для кода ниже. Здесь я хочу дать уведомление, если пользователи выбирают будущие тайминги. Но, здесь валидация даты работает нормально. Только проблема с выбором времени. Заранее спасибо.Проверка времени для android timePickerDialog

if (fired) { 
      fired = false; 
      if (date.after(currentDate)) { 
       new DoToast(mContext, getResources().getString(
         R.string.future_date)); 

      } else { 
       TimePickerDialog mTimePicker = new TimePickerDialog(mContext, 
         new TimePickerDialog.OnTimeSetListener() { 
          @Override 
          public void onTimeSet(TimePicker timePicker, 
            int selectedHour, int selectedMinute) { 

           String Am_Pm = ""; 

           hour = selectedHour; 
           minute = selectedMinute; 

           Calendar datetime = Calendar.getInstance(); 
           datetime.set(Calendar.HOUR_OF_DAY, hour); 
           datetime.set(Calendar.MINUTE, minute); 

           if (datetime.get(Calendar.AM_PM) == Calendar.AM) 
            Am_Pm = "AM"; 
           else if (datetime.get(Calendar.AM_PM) == Calendar.PM) 
            Am_Pm = "PM"; 
           String minuteText = "" + minute; 
           if (minuteText.length() < 2) { 
            minuteText = "0" + minuteText; 
           } 
           if (hour > 12) 
            hour = hour - 12; 

           date_time.setText(new StringBuilder() 
             .append(month + 1).append("-") 
             .append(day).append("-").append(year) 
             .append(" ") 
             + " " 
             + hour 
             + ": " 
             + minuteText 
             + " " 
             + Am_Pm); 
          } 
         }, hour, minute, false); 
       mTimePicker.setTitle("Select Time"); 
       hour = c.get(Calendar.HOUR_OF_DAY); 
       minute = c.get(Calendar.MINUTE); 
       mTimePicker.updateTime(hour, minute); 

       mTimePicker.show(); 
      } 
     } 

ответ

1

Ваша проверка должна быть инициирована изнутри onTimeSet, иначе она будет установлена ​​до ее проверки.

  • Проверить действительность по отношению к временному объекту Callendar, когда вы получаете обратный вызов от слушателя.
  • Используйте форму SimpleDateFormat для форматирования строки, которую вы создаете для отображения.

Следующий код можно назвать в любом месте вашей деятельности, и он должен работать. Я также обновил свой метод date_time string до более элегантного. Я предполагаю, что date_time и c установлены и доступны.

TimePickerDialog mTimePicker = new TimePickerDialog(this, 
     new TimePickerDialog.OnTimeSetListener() { 
      public void onTimeSet(TimePicker timePicker,int selectedHour,int selectedMinute) { 
       Calendar temp=Calendar.getInstance(); 
       temp.set(Calendar.HOUR_OF_DAY,selectedHour); 
       temp.set(Calendar.MINUTE,selectedMinute); 

       if(temp.after(GregorianCalendar.getInstance())){ 
        Toast.makeText(mContext.this, "Cannot select a future time", Toast.LENGTH_SHORT).show(); 
       } else { 
        Calendar datetime=Calendar.getInstance(); 
        datetime.set(Calendar.HOUR_OF_DAY,selectedHour); 
        datetime.set(Calendar.MINUTE,selectedMinute); 
        SimpleDateFormat mSDF=new SimpleDateFormat("MM-dd-yyyy hh: mm a"); 
        date_time.setText(mSDF.format(datetime.getTime())); // make sure this is accessible 
       } 
      } 
     }, sCal.get(Calendar.HOUR_OF_DAY), sCal.get(Calendar.MINUTE), false); 
// Ensure that c is established 
mTimePicker.updateTime(c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE)); 
mTimePicker.show(); 
+0

может у показать мне кодом ??? – iffu

+0

не работает нормально – iffu

+0

Убедитесь, что вы используете версию, которая сейчас находится здесь, что ваша функция DoToast работает и что виджет date_time доступен. –

0
Try simple piece of code using For 24 hour time 
    StartTime = "10:00"; 
    EndTime = "13:00"; 
    here starthour=10 and end hour=13 




    if(TextUtils.isEmpty(txtDate.getText().toString())||TextUtils.isEmpty(txtDate1.getText().toString())||TextUtils.isEmpty(txtTime.getText().toString())||TextUtils.isEmpty(txtTime1.getText().toString())) 
    { 
     Toast.makeText(getApplicationContext(), "Date/Time fields cannot be blank", Toast.LENGTH_SHORT).show(); 
    } 
    else { 
     if (starthour > endhour) { 
      Toast.makeText(getApplicationContext(), "Start Time Should Be Less Than End Time", Toast.LENGTH_SHORT).show(); 
     } else if (starthour == endhour) { 
      if (startmin > endmin) { 
       Toast.makeText(getApplicationContext(), "Start Time Should Be Less Than End Time", Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
       tvalid = "True"; 
      } 
     } else { 
      // Toast.makeText(getApplicationContext(),"Sucess"+(endhour-starthour)+(endmin-startmin),Toast.LENGTH_SHORT).show(); 
      tvalid = "True"; 
     } 
    } 
same for date also 
Смежные вопросы