помоги в функции сравнивать дату системы с датой, выбранной в calendarView

я нуждаюсь в функции, чтобы санкционировать, что избранная дата caledar view была датой, следующей за днем, в котором делается реестр и который, если не выполняется это, не позволяет мне продолжать с кнопкой, уже у меня есть часть функции, но он бьет козырем мне, что в начало меня не сравнивает ничто, если не, что до тех пор, пока я не нажимаю кнопку и вновь выбираю даты в моем календаре тогда, если он это делает, это был бы код

private  void validarCalendario(CalendarView calendarView){

        calendario.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {

            @Override
            public void onSelectedDayChange(CalendarView calendario, int i, int i1, int i2) {

                Calendar calendarNow = Calendar.getInstance();
                int monthDay =calendarNow.get(Calendar.DAY_OF_MONTH);
                int month = calendarNow.get(Calendar.MONTH);
                int year = calendarNow.get(Calendar.YEAR);
                String hora = horario.getSelectedItem().toString();
                String day = String.valueOf(monthDay);
                String mes = String.valueOf(month+1);
                String año = String.valueOf(year);

                i1 = i1+1;
                String dayC = String.valueOf(i2);
                String mesC = String.valueOf(i1);
                String añoC = String.valueOf(i);

                try{
                    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
                    Date date1 = sdf.parse(day + "-" + mes + "-" + año);
                    Date date2 = sdf.parse(dayC + "-" + mesC + "-" + añoC);
                    if(date2.before(date1) || date1.equals(date2) ){
                        continuarFlag = false;
                        Toast.makeText(getApplicationContext(),"La cita no se puede agendar el mismo dia del registro o anterior a este", Toast.LENGTH_LONG).show();
                    }
                    else{
                        textMessage = "La fecha de su cita es el " + i2 + "" + "/" + i1 + "" + "/" + i + " con un horario de " + hora;

                    }

                }
                catch (java.text.ParseException e) {
                    e.printStackTrace();
                }
            }
        });
    }

уже в кнопке я посылаю звонить в функцию санкционирования, в которой санкционируется этот календарь, но даже после первого клика в кнопке

4
задан 03.01.2017, 07:02
0 ответов

Если я это понял хорошо, у тебя есть ошибка сжатия в разгрузке твоей программы.

Если это кнопка, которая звонит в функцию validarCalendario(CalendarView calendarView), нормально, чтобы до сих пор тебя не санкционировало ничто, так как он в этой функции, где определяется событие onSelectedDayChange. То, что происходит с тобой:

  • Когда он загружает твой Activity, событие onSelectedDayChange даже он не был зарегистрирован.
  • Пользователь выбирает дату, которую он хотел бы.
  • Когда пользователь нажимает кнопку, ты регистрируешь событие onSelectedDayChange, но ничто не происходит, так как пользователь нажимает кнопку и не выбирает какую-то дату.
  • Пользователь вновь меняет дату (во второй раз) и сейчас, если, есть зарегистрированное событие.

То, что ты должен делать, состоит в том, чтобы регистрировать событие onSelectedDayChange в onCreate твоего Activity, так он будет активным для, когда пользователь изменит дату.

0
ответ дан 03.12.2019, 17:53
  • 1
    если в одиноком onCreate я оставляю calendario.setOnDateChangeListener (new CalendarView. OnDateChangeListener () { @Override public void onSelectedDayChange (CalendarView календарь, int i, int i1, int i2) { } }); тогда в моем funció n лиши тебя void validarCalendario (CalendarView calendarView) { } как podrí чтобы санкционировать мой календарь? –  04.01.2017, 19:00
  • 2
    у тебя есть один continuarFlag, который ты устанавливаешь в false, когда validació n она не правильна, хотя тебе остается устанавливать это в true, когда если. –  05.01.2017, 09:38

Теги

Похожие вопросы