Как обрабатывать диалоговое окно выбора даты, чтобы оно не устанавливалось в тексте редактирования при нажатии вне диалогового окна Android?

Когда я нажимаю edittext, открывается диалоговое окно выбора даты. без нажатия кнопки «Готово» в средстве выбора даты и щелчка вне диалогового окна он устанавливается в тексте редактирования.

Я проверил это, но это работает в первый раз. При выборе во второй раз путем выбора диалогового окна и без нажатия кнопки «Готово» происходит сбой.

private final DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
       private boolean fired;
         public void resetFired(){
                fired = false;
            }
            @Override
            public void onDateSet(DatePicker view, int selectedYear,
                    int selectedMonth, int selectedDay) {
                if (fired) {
                    Log.e("DatePicker", "Ignoring for first time");
                    birthDayValue = selectedDay;
                    birthMonthValue = selectedMonth;
                    birthYearValue = selectedYear;
                    String birthDayDateFormt = Utils.getBirthDayDate(selectedYear,
                            selectedMonth, selectedDay);
                    dateOfBirth.setText(birthDayDateFormt);
                    dateOfBirth.setError(null);
                    return;//ignore and return.
                } 
                fired = true;//first time fired
            }
    };

};

Как решить эту проблему?


person Shadow    schedule 01.02.2015    source источник
comment
Вызываете ли вы метод resetFire() для своего экземпляра прослушивателя? Просто убедитесь, что после каждого отклонения вы вызываете resetFire().   -  person Gent Ahmeti    schedule 01.02.2015
comment
нет. где я должен это использовать? не могли бы вы показать мне код, чтобы, если он сработает, я выбрал и закрыл этот вопрос без ответа.   -  person Shadow    schedule 01.02.2015
comment
Мне жаль. Я неправильно понял вопрос. Но я не думаю, что этот метод будет делать то, что вы хотите. На этот вопрос у вас было много хороших ответов, попробуйте принятый.   -  person Gent Ahmeti    schedule 01.02.2015
comment
я попробовал это и поэтому только разместил вопрос. однако спасибо. @torque203   -  person Shadow    schedule 02.02.2015
comment
Вы пробовали это?   -  person SweetWisher ツ    schedule 02.02.2015


Ответы (1)


        @Override
        public void onDateSet(DatePicker view, int selectedYear,
                int selectedMonth, int selectedDay) {
        if(view.isShown()) {
            if (fired) {
                Log.e("DatePicker", "Ignoring for first time");
                birthDayValue = selectedDay;
                birthMonthValue = selectedMonth;
                birthYearValue = selectedYear;
                String birthDayDateFormt = Utils.getBirthDayDate(selectedYear,
                        selectedMonth, selectedDay);
                dateOfBirth.setText(birthDayDateFormt);
                dateOfBirth.setError(null);
                return;//ignore and return.
            } 
            fired = true;//first time fired
          }
        }

if(view.isShown()) добавьте код в это условие, это простой шаг, сделайте это и проверьте вывод

person Prashant Gosai    schedule 22.02.2016