【问题标题】:How to handle date picker dialog not to set in edittext when clicked outside of dialog android?在对话框android之外单击时如何处理不设置在edittext中的日期选择器对话框?
【发布时间】:2015-02-01 11:58:48
【问题描述】:

当我单击edittext 时,日期选择器对话框打开。无需单击日期选择器中的完成按钮并在对话框之外单击,它会在 edittext 中设置。

checked this 但这是第一次。通过选择对话框进行第二次选择而不单击完成按钮时,它会失败。

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
            }
    };

};

如何解决这个问题?

【问题讨论】:

  • 您是否在侦听器实例上调用 resetFire() 方法?只需确保在每次解雇后调用 resetFire()
  • 没有。我应该在哪里使用它?请给我一个代码,如果有效,我会从未回答的问题中选择并关闭它。
  • 对不起。我误解了这个问题。但我不认为这种方法会做你想做的事。在那个问题上,你有很多好的答案,请尝试接受的答案。
  • 我试过了,所以只发布了这个问题。不过谢谢。 @torque203
  • 你试过this 吗?

标签: android android-datepicker android-date


【解决方案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()) 在这种情况下添加代码, 这是一个简单的步骤,并检查输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多